Submission #1105597

#TimeUsernameProblemLanguageResultExecution timeMemory
1105597FaggiSails (IOI07_sails)C++11
0 / 100
37 ms10460 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; const int MAXN = 1e5; const int MAXS = 262144; ll seg[MAXS], dp[MAXN], vf[MAXN],pot=131072, dpCalc[MAXN+1]; void calc(ll x, ll nod) { if(nod>=pot) { vf[nod-pot]=x; return; } ll iz, der, mid, maD; mid=x/2ll; iz=mid; der=mid; if(der+der<x) der++; maD=seg[nod*2+1]; if(maD<der) { iz+=der-maD; der=maD; } if(iz>0) calc(iz,nod*2); if(der>0) calc(der,nod*2+1); } int main() { ll n, i,tot=0, a, b, res=0; cin >> n; for(i=2; i<=MAXN; i++) { dpCalc[i]=dpCalc[i-1]+(i-1); } for(i=0; i<n; i++) { cin >> a >> b; tot+=b; a--; b-=2; dp[a]++; if(b>=0) dp[b]--; } for(i=MAXN-1; i>=0; i--) { dp[i]+=dp[i+1]; } for(i=pot; i<MAXS; i++) { seg[i]=dp[i-pot]; } for(i=pot-1; i>0; i--) { seg[i]=seg[i*2]+seg[i*2+1]; } calc(tot,1); for(i=MAXN-1; i>=0; i--) { res+=dpCalc[vf[i]]; } cout << res; return 0; }
#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...