# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
888248 | pcc | Money (IZhO17_money) | C++14 | 2 ms | 4700 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pll pair<ll,ll>
#define pii pair<int,int>
#define fs first
#define sc second
#define tlll tuple<ll,ll,ll>
#define tiii tuple<int,int,int>
const int mxn = 1e6+10;
int arr[mxn];
int n;
int bit[mxn];
void modify(int p,int val){
for(;p<mxn;p+=p&-p)bit[p] += val;
return;
}
int getval(int p){
int re = 0;
for(;p>0;p-= p&-p)re += bit[p];
return re;
}
set<int> st;
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>n;
for(int i = 1;i<=n;i++){
cin>>arr[i];
st.insert(arr[i]);
}
assert(st.size() == n&&*st.rbegin() == n);
int ans = 0;
for(int i = n;i>=1;){
int now = arr[i]-getval(arr[i]);
int pt = i;
for(;arr[pt]-getval(arr[pt]) == now&&pt>0;pt--,now--)modify(arr[pt],1);
ans++;
//cout<<pt<<' '<<i<<endl;
i = pt;
}
cout<<ans;
}
Compilation message (stderr)
# | 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... |