Submission #1294591

#TimeUsernameProblemLanguageResultExecution timeMemory
1294591tudor_costinSails (IOI07_sails)C++20
25 / 100
1096 ms12952 KiB
#include <bits/stdc++.h> #define int long long using namespace std; const int Nmax=1e5+5; set<int> poz[Nmax]; signed main() { int n; cin>>n; int maxi=0; for(int i=1;i<=n;i++) poz[0].insert(i); for(int i=1;i<=n;i++) { int h,k; cin>>h>>k; vector<pair<int,int>> chpoz; for(int cnt=0;cnt<=maxi;cnt++) { auto it=poz[cnt].upper_bound(h); if(it==poz[cnt].begin()) continue; it--; for(it;true;it--) { int x=(*it); if(x>h) continue; chpoz.push_back({x,cnt}); k--; if(k==0 || it==poz[cnt].begin()) break; } if(k==0) break; } for(auto [x,cnt]:chpoz) { poz[cnt].erase(poz[cnt].find(x)); poz[cnt+1].insert(x); maxi=max(maxi,cnt+1); } } int ans=0; for(int cnt=0;cnt<=maxi;cnt++) { int nums=poz[cnt].size(); ans+=nums*cnt*(cnt-1)/2; } cout<<ans<<'\n'; 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...