#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |