数据太水了,纯暴力都过了
#include <cstdio>
#include <map>
#include <algorithm>
using namespace std;
const int maxn = 10000005;
const int maxm = 2005;
int n, m;
int cnt, maxr, ans;
int wall[maxn << 2];
map<int, bool> appeared;
struct Paper {
int left, right;
} paper[maxm];
int main() {
scanf("%d%d", &n, &m);
for (int i = 1; i <= m; i++) {
scanf("%d%d", &paper[i].left, &paper[i].right);
maxr = max(maxr, paper[i].right);
}
for (int i = 1; i <= m; i++) {
for (int j = paper[i].left; j <= paper[i].right; j++) {
wall[j] = i;
}
}
for (int i = 1; i <= maxr; i++) {
if (!appeared[wall[i]] && wall[i] != 0) {
appeared[wall[i]] = true;
ans++;
}
}
printf("%d", ans);
return 0;
}