제출 #1323540

#제출 시각아이디문제언어결과실행 시간메모리
1323540ZeroCoolRoller Coaster Railroad (IOI16_railroad)C++20
100 / 100
182 ms30364 KiB
#include "railroad.h" #include <bits/stdc++.h> #define int long long #define ar array #define all(v) v.begin(), v.end() using namespace std; const int INF = 1e9; struct DSU{ vector<int> p; DSU(int n){ p.resize(n); iota(all(p), 0); } int fnd(int x){ if(p[x] == x)return x; return p[x] = fnd(p[x]); } bool upd(int a,int b){ a = fnd(a); b = fnd(b); if(a == b)return 0; p[a] = b; return 1; } }; long long plan_roller_coaster(std::vector<signed> s, std::vector<signed> t) { s.push_back(INF); t.push_back(1); int n = (int) s.size(); map<int,int> mp; vector<int> C; for(int i = 0;i < n;i++){ C.push_back(s[i]); C.push_back(t[i]); } sort(all(C)); C.erase(unique(all(C)), C.end()); auto comp = [&](int i) -> int{ return lower_bound(all(C), i) - C.begin(); }; DSU dsu(C.size()); vector<int> v(C.size(), 0); for(int i = 0;i < n;i++){ // cout<<s[i]<<" "<<t[i]<<':'; s[i] = comp(s[i]); t[i] = comp(t[i]); // cout<<s[i]<<" "<<t[i]<<'\n'; dsu.upd(s[i], t[i]); v[s[i]]++; v[t[i]]--; } // for(int i = 0;i < n;i++)cout<<v[i]<<" "; // cout<<'\n'; int sum = 0; int ans = 0; vector<ar<int,3>> e; for(int i = 0;i + 1 < v.size();i++){ sum += v[i]; if(sum > 0)ans += sum * (C[i + 1] - C[i]); if(sum)dsu.upd(i,i + 1); e.push_back({C[i + 1] - C[i], i, i + 1}); } sort(all(e)); for(auto [w, a, b]: e){ if(dsu.upd(a, b))ans += w; } return ans; } #define int signed

컴파일 시 표준 에러 (stderr) 메시지

railroad.cpp:76: warning: "int" redefined
   76 | #define int signed
      | 
railroad.cpp:3: note: this is the location of the previous definition
    3 | #define int long long
      | 
railroad.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
railroad_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...