Submission #1170999

#TimeUsernameProblemLanguageResultExecution timeMemory
1170999AlgorithmWarriorMoney (IZhO17_money)C++20
100 / 100
207 ms15996 KiB
#include <bits/stdc++.h> using namespace std; int const MAX=1e6+5; int v[MAX]; int fr[MAX]; int st[MAX],dr[MAX]; int n; void read(){ cin>>n; int i; for(i=1;i<=n;++i) cin>>v[i]; } void precalc(){ int i; for(i=1;i<=n;++i){ int val=v[i]; ++fr[val]; } int ult=0; for(i=1;i<MAX;++i) if(fr[i]){ st[i]=ult; dr[ult]=i; ult=i; } dr[ult]=MAX-1; st[MAX-1]=ult; } int solve(){ int id=n; int ans=0; while(id){ ++ans; int val=v[id]; while(v[id]==val){ --fr[val]; --id; } if(!fr[val]){ dr[st[val]]=dr[val]; st[dr[val]]=st[val]; } val=st[val]; while(v[id]==val && id){ --fr[val]; --id; if(!fr[val]){ dr[st[val]]=dr[val]; st[dr[val]]=st[val]; val=st[val]; } } } return ans; } int main() { read(); precalc(); cout<<solve(); 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...