제출 #710211

#제출 시각아이디문제언어결과실행 시간메모리
710211safaricolaMoney (IZhO17_money)C++17
0 / 100
1 ms212 KiB
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define pi pair <int, int>
#define pii pair <pi, int>
#define rep(i,n) for(ll i = 1; i <= n; i++)
#define fi first
#define se second
using namespace std;
int n, a[1000010];
bool vis[1000010];
#define debug(x) cout<<#x<<' '<<x<<endl;
int fw[1000010];
void update(int x, int v) {
    for (; x<n+1; x+=x&(-x)) fw[x] += v;
}
int sum(int x) {
   int res = 0;
   for(; x; x-=x&(-x)) res += fw[x];
   return res; 
}
int range_sum(int x, int y) { //inclusive
    return sum(y)-sum(x-1);
}

int main(){
   ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
   cin>>n;
   rep(i,n)cin>>a[i];
   int ans=1;
   vector<int> v;
   for(int i=n; i>1; i--){ 
      //debug(i);
      v.pb(a[i]);
      if(a[i-1]>a[i]){
         for(auto it: v)update(it,1);
         v.clear();
         ans++;
      }else{
         if(range_sum(a[i-1],a[i])!=a[i]-a[i-1]-1){
            ans++;
            for(auto it: v)update(it,1);
            v.clear();
         }
      }
      //rep(i,n)cout<<range_sum(i,i);cout<<endl;
   }
   cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...