제출 #1268340

#제출 시각아이디문제언어결과실행 시간메모리
1268340uranium235Sails (IOI07_sails)C++17
5 / 100
19 ms1608 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const char nn = '\n'; int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; vector<pair<int, int>> a(n + 1); for (int i = 0; i < n; i++) cin >> a[i].first >> a[i].second; sort(a.begin(), a.end()); reverse(a.begin(), a.end()); int hang = a[0].first, cur = 0; int prev = a[0].first; vector<int> ans(100000 + 1, -1); assert(a[n].first == 0 && a[n].second == 0); for (pair<int, int> &i : a) { // cout << i.first << " " << i.second << nn; for (int j = i.first + 1; j <= hang; j++) { assert(ans[j] == -1); ans[j] = cur; } for (int j = max(i.first + 1, hang + 1); j <= prev; j++) { assert(ans[j] == -1); ans[j] = cur + 1; } prev = i.first; hang = min(hang, i.first); if (hang > i.second) { hang -= i.second; } else { cur++; int leftover = i.second - hang; hang = i.first - leftover; } // cout << "dbg " << hang << " " << cur << nn; // for (int i : ans) cout << i << " "; // cout << nn; } ll total = 0; for (int i : ans) { if (i != -1) total += i * (i - 1) / 2; } cout << total << nn; }
#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...
#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...