이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define maxN 1000005
using namespace std;
int a[maxN],ans,tmp,d,n,i,f[maxN];
void update(int p,int v){
while(p<maxN){
f[p]+=v;
p+=p & (-p);
}
}
int query(int p){
int ans=0;
while(p>0){
ans+=f[p];
p-=p & (-p);
}
return ans;
}
int main()
{
std::ios_base::sync_with_stdio(false);
cin>>n;
for(i=0;i<n;i++) {cin>>a[i]; update(a[i],1);}
d=n-1;
ans=1;
for(i=n-1;i>0;i--){
update(a[i],-1);
if(a[i-1]>a[i]){d=i-1; ans++; continue;}
if(a[i]==a[i-1]) continue;
tmp=query(a[d]-1)-query(a[i-1]);
if(tmp==0) continue;
d=i-1;
ans++;
}
sort(a,a+n);
//for(i=0;i<n;i++) cout<<a[i]<<" ";
cout<<ans<<endl;
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... |