Submission #756088

#TimeUsernameProblemLanguageResultExecution timeMemory
756088SanguineChameleonSails (IOI07_sails)C++17
60 / 100
1080 ms1304 KiB
#include <bits/stdc++.h> using namespace std; void just_do_it(); int main() { #ifdef KAMIRULEZ freopen("kamirulez.inp", "r", stdin); freopen("kamirulez.out", "w", stdout); #endif ios_base::sync_with_stdio(0); cin.tie(0); just_do_it(); return 0; } const int maxn = 1e5 + 20; pair<int, int> a[maxn]; int cnt[maxn]; void update(int lt, int rt) { for (int i = lt; i <= rt; i++) { cnt[i]++; } } void just_do_it() { int n; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i].first >> a[i].second; } sort(a + 1, a + n + 1); int h = a[n].first; for (int i = 1; i <= n; i++) { int rt2 = a[i].first; int rem = a[i].second; int val = cnt[rt2 - rem + 1]; int rt1 = -1; for (int j = 1; j <= h; j++) { if (cnt[j] >= val) { rt1 = j; } else { break; } } int lt = -1; for (int j = h; j >= 1; j--) { if (cnt[j] <= val) { lt = j; } else { break; } } if (rt1 < rt2) { update(rt1 + 1, rt2); rem -= rt2 - rt1; } if (rem > 0) { update(lt, lt + rem - 1); } } long long res = 0; for (int i = 1; i <= h; i++) { res += 1LL * cnt[i] * (cnt[i] - 1) / 2; } cout << res; }
#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...