Submission #170116

#TimeUsernameProblemLanguageResultExecution timeMemory
170116nvmdavaMoney (IZhO17_money)C++17
100 / 100
255 ms18948 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ff first #define ss second mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); #define INF 0x3f3f3f3f #define MOD 1000000007 #define N 1000005 int a[N]; int fen[N]; void update(int x){ while(x < N){ ++fen[x]; x += x & -x; } } int query(int x){ int s = 0; while(x){ s += fen[x]; x -= x & -x; } return s; } int dp[N]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin>>n; int l = 0; a[0] = 1000005; for(int i = 1; i <= n; ++i){ cin>>a[i]; if(a[i] < a[i - 1]) while(i != l) update(a[l++]); while(l < i && a[i] != a[l] && query(a[i] - 1) != query(a[l])){ update(a[l++]); } dp[i] = dp[l - 1] + 1; } cout<<dp[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...