Submission #52398

#TimeUsernameProblemLanguageResultExecution timeMemory
52398MatheusLealVMoney (IZhO17_money)C++17
100 / 100
203 ms152340 KiB
#include <bits/stdc++.h> #define N 1000050 using namespace std; int bit[N], v[N], n, ans; void upd(int x, int v) { x += 2; for(int i = x; i < N; i += (i&-i)) bit[i] += v; } int query(int x) { x += 2; int sum = 0; for(int i = x; i > 0; i -= (i&-i)) sum += bit[i]; return sum; } int main() { ios::sync_with_stdio(false); cin.tie(0); cin>>n; for(int i = 1; i <= n; i++) cin>>v[i]; for(int i = 1; i <= n; i++) { int st = i, ant = v[i]; ans ++; while(i <= n and v[i] >= ant) { int A = min(v[i], v[st] - 1), B = max(v[i], v[st] - 1); A ++, B --; if(A <= B and query(B) - query(A)) break; ant = v[i]; i ++; } for(int j = st; j < i; j++) upd(v[j], 1); i --; } cout<<ans<<"\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...