제출 #589266

#제출 시각아이디문제언어결과실행 시간메모리
589266PetiRoad Construction (JOI21_road_construction)C++14
33 / 100
2289 ms26272 KiB
#include <bits/stdc++.h> using namespace std; struct pont{ long long x, y; bool operator<(const pont &p) const{ return x < p.x; } }; vector<long long> megold(vector<pont> &v, int n, long long d, int k){ //cout<<"start dist: "<<d<<'\n'; set<pont> s; vector<long long> ret; for(pont p : v){ auto it = s.lower_bound({p.x-d, 0}); //cout<<"p: "<<p.x<<' '<<p.y<<"------------\n"; while(it != s.end() && it->x <= p.x+d){ //cout<<it->x<<' '<<it->y<<'\n'; if(it->y < p.y-d){ it++; s.erase(prev(it)); } else{ ret.push_back(max(abs(p.x - it->x), abs(p.y - it->y))); if(ret.size() > k) return ret; it++; } } s.insert(p); } return ret; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n, k; cin>>n>>k; vector<pont> v(n); for(int i = 0; i < n; i++){ long long x, y; cin>>x>>y; v[i].x = x+y; v[i].y = x-y; } sort(v.begin(), v.end(), [](pont a, pont b) -> bool{ return a.y < b.y; }); long long l = 0, r = (long long)5e9; while(l+1ll < r){ long long m = (l+r)/2; vector<long long> tmp = megold(v, n, m, k); if(tmp.size() <= k) l = m; else r = m; } vector<long long> ki = megold(v, n, l, k); ki.resize(k, l+1ll); sort(ki.begin(), ki.end()); for(long long x : ki) cout<<x<<'\n'; return 0; }

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

road_construction.cpp: In function 'std::vector<long long int> megold(std::vector<pont>&, int, long long int, int)':
road_construction.cpp:26:31: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   26 |                 if(ret.size() > k) return ret;
      |                    ~~~~~~~~~~~^~~
road_construction.cpp: In function 'int main()':
road_construction.cpp:56:23: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   56 |         if(tmp.size() <= k)
      |            ~~~~~~~~~~~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...