제출 #85039

#제출 시각아이디문제언어결과실행 시간메모리
85039igziMoney (IZhO17_money)C++17
100 / 100
436 ms16268 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...