Submission #513180

#TimeUsernameProblemLanguageResultExecution timeMemory
513180kevinSails (IOI07_sails)C++17
15 / 100
36 ms9276 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define nl cout<<"\n" #define f first #define s second #define ca(v) for(auto i:v) cout<<i<<" "; const int MAXN = 1000000; ll h[MAXN + 5]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); if (fopen("input.in", "r")) freopen("input.in", "r", stdin); int n; cin>>n; for(int i=0; i<n; i++){ ll H, K; cin>>H>>K; h[H-K+1]++; h[H+1]--; } for(int i=1; i<=MAXN; i++){ h[i] += h[i-1]; } vector<pair<ll, ll>> v; for(int i=1; i<=MAXN; i++){ // if(i <= 7){ // cout<<h[i]<<" "; // for(auto p:v) cout<<p.f<<"|"<<p.s<<" "; // nl; // } if(!h[i]) continue; if(v.size() == 0){ if(i == 1) { v.push_back({1, h[i]}); continue; } v.push_back({i-1, 0}); } if(h[i] < v.back().s) v.push_back({1, h[i]}); else{ h[i] -= v.back().s; v[v.size()-1].f++; while(h[i]){ if(v.size() == 1 || abs(v.back().s - v[v.size()-2].s) * v.back().f >= h[i]){ pair<ll, ll> tmp = v.back(); v.pop_back(); ll x = h[i] / tmp.f; ll r = h[i] % tmp.f; if(!r) v.push_back({tmp.f, tmp.s + x}); else{ v.push_back({tmp.f - r, tmp.s + x + 1}); v.push_back({r, tmp.s + x}); } h[i] = 0; } else{ h[i] -= abs(v.back().s - v[v.size()-2].s) * v.back().f; v[v.size()-2].f += v.back().f; v.pop_back(); } } } } ll ans = 0; for(auto p:v){ // cout<<p.f<<" "<<p.s<<"\n"; ans += (ll)p.f * (p.s * (p.s - 1) / 2); } cout<<ans<<"\n"; }

Compilation message (stderr)

sails.cpp: In function 'int main()':
sails.cpp:17:40: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |     if (fopen("input.in", "r")) freopen("input.in", "r", stdin);
      |                                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#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...