Submission #1115328

#TimeUsernameProblemLanguageResultExecution timeMemory
1115328vjudge1Money (IZhO17_money)C++17
0 / 100
2 ms4656 KiB
#include "bits/stdc++.h"

using namespace std;

const int mxN = 1000006;

struct fwtree {
	int ar[mxN];

	void add(int i, int x) {
		for (++ i; i < mxN; i += i & -i) {
			ar[i] += x;
		}
	}

	int qry(int i) {
		int r = 0;
		for (++ i; i; i -= i & -i) {
			r += ar[i];
		}
		return r;
	}

	int qry(int i, int j) {
		return qry(j) - qry(i - 1);
	}
} fw;

int a[mxN];

void solve() {
	int N;
	cin >> N;

	for (int i = 0; i < N; i ++) {
		cin >> a[i];
	}

	int ans = 0;
	for (int i = 0; i < N; i ++) {
		int d = a[i];
		int c = i;
		fw.add(d, 1);
		for (int j = i + 1; j < N; j ++) {
			if (a[j - 1] <= a[j] && j - c == fw.qry(d, a[j])) {
				fw.add(a[j], 1);
				i = j;
			} else {
				break;
			}
		}
		ans ++;
	}

	cout << ans << endl;
}

int main() {
	solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...