Submission #1214827

#TimeUsernameProblemLanguageResultExecution timeMemory
1214827biankBikeparking (EGOI24_bikeparking)C++20
100 / 100
291 ms28616 KiB
#include <bits/stdc++.h> using namespace std; #define forn(i,n) for(int i=0;i<int(n);i++) #define forsn(i,s,n) for(int i=int(s);i<int(n);i++) #define dforn(i,n) for(int i=int(n)-1;i>=0;i--) #define dforsn(i,s,n) for(int i=int(n)-1;i>=int(s);i--) #define fst first #define snd second #define pb push_back #define eb emplace_back #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() typedef long long ll; typedef vector<ll> vll; typedef vector<int> vi; typedef pair<int,int> ii; int main(){ ios::sync_with_stdio(0); cin.tie(0); int n; cin>>n; map<int,int> x,y; forn(i,n) cin>>x[i]; forn(i,n) cin>>y[i]; ll score=0; forn(i,n){ if(!y.count(i)) continue; while(y[i]>0){ auto it=x.lower_bound(i); if(it!=x.begin()){ it--; if(it->snd<=y[i]){ y[i]-=it->snd; score+=it->snd; x.erase(it); }else{ score+=y[i]; it->snd-=y[i]; y[i]=0; } }else break; } if(y[i]==0) y.erase(i); } forn(i,n){ if(!y.count(i)) continue; auto it=x.lower_bound(i); if(it->fst==i){ if(it->snd<=y[i]){ y[i]-=it->snd; x.erase(it); }else{ it->snd-=y[i]; y[i]=0; } } score-=y[i]; } cout<<score<<'\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...