Submission #1170995

#TimeUsernameProblemLanguageResultExecution timeMemory
1170995AlgorithmWarriorMoney (IZhO17_money)C++20
0 / 100
1 ms320 KiB
#include <bits/stdc++.h> using namespace std; ifstream fin("money.in"); ofstream fout("money.out"); int const MAX=1e6+5; int v[MAX]; int fr[MAX]; int st[MAX],dr[MAX]; int n; void read(){ fin>>n; int i; for(i=1;i<=n;++i) fin>>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(); fout<<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...