제출 #222270

#제출 시각아이디문제언어결과실행 시간메모리
222270BruteforcemanGap (APIO16_gap)C++11
100 / 100
85 ms3316 KiB
#include "bits/stdc++.h" #include "gap.h" using namespace std; const long long maxV = 1e18; long long findGap(int T, int N) { long long mx, mn; MinMax(0, maxV, &mn, &mx); if(T == 1) { vector <long long> left, right; left.push_back(mn); right.push_back(mx); while(left.size() + right.size() < N) { long long p, q; MinMax(mn + 1, mx - 1, &p, &q); tie(mn, mx) = make_pair(p, q); left.push_back(mn); right.push_back(mx); } for(auto i : right) left.push_back(i); sort(left.begin(), left.end()); long long ans = 0; for(int i = 1; i < left.size(); i++) { ans = max(ans, left[i] - left[i - 1]); } return ans; } long long lower = (mx - mn + N - 2) / (N - 1); long long cur = mn + 1; vector <long long> v ({mn}); int cnt = N - 1; while(cur <= mx) { long long p, q; MinMax(cur, min(mx, cur + lower), &p, &q); cur += lower + 1; if(p != -1) { if(!v.empty()) { lower = max(lower, p - v.back()); } v.push_back(p); v.push_back(q); cnt -= (p == q) ? 1 : 2; } else { lower = max(lower, min(mx, cur) - v.back()); } if(cnt) lower = max(lower, (mx - v.back() + cnt - 1) / cnt); // cout << cur << " " << min(mx, cur + lower - 1) << " " << p << " " << q << endl; } return lower; }

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

gap.cpp: In function 'long long int findGap(int, int)':
gap.cpp:13:42: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         while(left.size() + right.size() < N) {
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
gap.cpp:23:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i = 1; i < left.size(); i++) {
                        ~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...