Submission #121739

#TimeUsernameProblemLanguageResultExecution timeMemory
121739turbatSails (IOI07_sails)C++14
80 / 100
1060 ms3832 KiB
#include <bits/stdc++.h> using namespace std; #define N 100005 int n, mh; long long sum, cnt[N], s[N], ans, p, uld, avr; pair <int, int> mast[N]; void solve (int l){ if (l > mh) return; p = l; // cout << l<< endl; for (int i = l;i <= mh;i++) if((s[i] - s[l - 1]) * (p - l + 1) > (s[p] - s[l - 1]) * (i - l + 1)) p = i; sum = s[p] - s[l - 1]; avr = sum / (p - l + 1); uld = sum % (p - l + 1); ans += uld * avr; ans += (p - l + 1) * avr * (avr - 1) / 2; solve (p + 1); } int main (){ ios_base::sync_with_stdio(NULL); cin.tie(NULL); cin >> n; for (int i = 0;i < n;i++){ cin >> mast[i].first>> mast[i].second; mh = max(mh, mast[i].first); cnt[mast[i].first]++; cnt[mast[i].first - mast[i].second]--; } for (int i = mh;i > 0;i--) cnt[i] += cnt[i + 1]; for (int i = 1;i <= mh;i++) { s[i] = s[i - 1] + cnt[i]; // cout << s[i] << endl; } solve (1); cout << ans; }
#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...