제출 #420472

#제출 시각아이디문제언어결과실행 시간메모리
420472juancarlovieriAutobahn (COI21_autobahn)C++17
100 / 100
368 ms26864 KiB
#include <bits/stdc++.h> using namespace std; #define kath ash #define int long long signed main() { int n, k, x; cin >> n >> k >> x; vector<int> l(n), t(n), r(n), events; for (int i = 0; i < n; ++i) { cin >> l[i] >> t[i] >> r[i]; events.push_back(l[i]); events.push_back(r[i]); events.push_back(r[i] + 1); events.push_back(r[i] - x); events.push_back((l[i] + t[i] - 1)); events.push_back(l[i] - x + 1); events.push_back((l[i] + t[i] - 1) + 1); events.push_back(r[i] - x + 1); events.push_back((l[i] + t[i] - 1) - x + 1); events.push_back((l[i] + t[i] - 1) - x); } sort(events.begin(), events.end()); events.resize(unique(events.begin(), events.end()) - events.begin()); events.push_back(1000000000000); vector<int> bad(events.size()), num(events.size()); for (int i = 0; i < n; ++i) { int j = lower_bound(events.begin(), events.end(), l[i]) - events.begin(); ++num[j]; j = lower_bound(events.begin(), events.end(), r[i] + 1) - events.begin(); --num[j]; } for (int i = 0; i < n; ++i) { if (l[i] + t[i] - 1 <= r[i]) { int j = lower_bound(events.begin(), events.end(), l[i] + t[i]) - events.begin(); bad[j]++; j = lower_bound(events.begin(), events.end(), r[i] + 1) - events.begin(); bad[j]--; } } for (int i = 1; i < events.size(); ++i) num[i] += num[i - 1], bad[i] += bad[i - 1]; int curl = events[0], curr = -1000000000000, val = 0, j = 0, ans = 0; int goal = 0; for (int i = 0; i + 1 < events.size(); i++) { curl = events[i]; if (curr <= curl) { curr = curl; val = ((num[i] >= k)) * bad[i]; j = i + 1; } else { val -= (events[i] - events[i - 1]) * (bad[i - 1]) * (num[i - 1] >= k); } while (1) { if (events[j] > x + curl - 1) { val += (bad[j - 1]) * (num[j - 1] >= k) * (curl + x - 1 - curr); curr = curl + x - 1; break; } else { val += (bad[j - 1]) * (num[j - 1] >= k) * (events[j] - 1 - curr); curr = events[j] - 1; ++j; } } if (val > ans) { ans = val; goal = events[i]; } } cout << ans << endl; }

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

autobahn.cpp: In function 'int main()':
autobahn.cpp:42:21: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |   for (int i = 1; i < events.size(); ++i) num[i] += num[i - 1], bad[i] += bad[i - 1];
      |                   ~~^~~~~~~~~~~~~~~
autobahn.cpp:45:25: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |   for (int i = 0; i + 1 < events.size(); i++) {
      |                   ~~~~~~^~~~~~~~~~~~~~~
autobahn.cpp:44:7: warning: variable 'goal' set but not used [-Wunused-but-set-variable]
   44 |   int goal = 0;
      |       ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...