67132023-12-17 18:23:49111Rendezéscpp17Accepted 40/4054ms8072 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define double long double

#define pii pair<int, int>

void join(vector<pii>& r) {
	if (r.empty()) {
		return;
	}
	int j = 0;
	for (int i = 1; i < r.size(); i++) {
		if (r[j].second >= r[i].first) {
			r[j].second = max(r[j].second, r[i].second);
		}
		else {
			j++;
			r[j] = r[i];
		}
	}
	r.resize(j + 1);
}

signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
#ifdef CB
	freopen("be2.txt", "r", stdin);
//	freopen("out.txt", "w", stdout);
#endif
	int N, M;
	cin >> N >> M;
	vector<int> v(N + 1);
	for (int i = 1; i <= N; i++) {
		cin >> v[i];
	}
	vector<pii> w(M);
	for (int i = 0; i < M; i++) {
		cin >> w[i].first >> w[i].second;
	}
	sort(w.begin(), w.end());
	join(w);
	for (auto [a, b] : w) {
		sort(v.begin() + a, v.begin() + b + 1);
	}
	int ans = 0;
	for (int i = 1; i <= N; i++) {
		ans += v[i] == i;
	}
	cout << ans << '\n';
	return 0;
}
SubtaskSumTestVerdictTimeMemory
base40/40
1Accepted0/03ms1824 KiB
2Accepted0/09ms2748 KiB
3Accepted2/23ms2296 KiB
4Accepted2/23ms2320 KiB
5Accepted2/23ms2440 KiB
6Accepted2/23ms2528 KiB
7Accepted2/23ms2680 KiB
8Accepted2/23ms2652 KiB
9Accepted2/23ms2664 KiB
10Accepted2/23ms2668 KiB
11Accepted2/248ms7352 KiB
12Accepted2/248ms7304 KiB
13Accepted2/248ms7308 KiB
14Accepted1/148ms7564 KiB
15Accepted2/248ms7776 KiB
16Accepted2/250ms7808 KiB
17Accepted2/254ms7812 KiB
18Accepted2/252ms7808 KiB
19Accepted2/252ms7808 KiB
20Accepted1/152ms7812 KiB
21Accepted2/250ms8072 KiB
22Accepted2/250ms8012 KiB
23Accepted2/252ms8016 KiB