제출 #113804

#제출 시각아이디문제언어결과실행 시간메모리
113804aminraSparklers (JOI17_sparklers)C++14
100 / 100
193 ms6524 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; const int MOD = (int)1e9 + 7; const int MAXN = (int)1e5 + 3; const int infint = (int)1e9 + 3; const ll inf = (ll)2e18; int n, k, t; int X[MAXN]; bool make(vector < ld > x, vector < ld > y) { if (x[0] < y[0]) return 0; int ok = 1; pair<int, int> L, R; L = {0, 0}; R = {0, 0}; while (ok) { ok = 0; while (L.first + 1 < x.size() && x[L.first + 1] >= y[R.second]) { ok = 1; if (x[++L.first] > x[L.second]) L.second = L.first; } while (R.first + 1 < y.size() && y[R.first + 1] <= x[L.second]) { ok = 1; if (y[++R.first] < y[R.second]) R.second = R.first; } } return L.first + 1 == x.size() && R.first + 1 == y.size(); } bool check(int s) { vector <ld> x, y; for (ll i = k; i >= 0; i--) x.push_back(X[i] - (ld)2 * s * t * i); for (ll i = k; i < n; i++) y.push_back(X[i] - (ld)2 * s * t * i); if (!make(x, y)) return 0; reverse(x.begin(), x.end()); reverse(y.begin(), y.end()); if (!make(x, y)) return 0; return 1; } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> k >> t; k--; for (ll i = 0; i < n; i++) cin >> X[i]; int L = 0, R = infint; while (L < R) { ll mid = (L + R) >> 1; if (check(mid)) R = mid; else L = mid + 1; } cout << L; }

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

sparklers.cpp: In function 'bool make(std::vector<long double>, std::vector<long double>)':
sparklers.cpp:23:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
      while (L.first + 1 < x.size() && x[L.first + 1] >= y[R.second])
             ~~~~~~~~~~~~^~~~~~~~~~
sparklers.cpp:29:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while (R.first + 1 < y.size() && y[R.first + 1] <= x[L.second])
          ~~~~~~~~~~~~^~~~~~~~~~
sparklers.cpp:36:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    return L.first + 1 == x.size() && R.first + 1 == y.size();
           ~~~~~~~~~~~~^~~~~~~~~~~
sparklers.cpp:36:50: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    return L.first + 1 == x.size() && R.first + 1 == y.size();
                                      ~~~~~~~~~~~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...