线性复杂度为什么会TLE?
查看原帖
线性复杂度为什么会TLE?
763056
MichaelZeng2007楼主2023/8/5 16:04
#include <bits/stdc++.h>
using namespace std;

const int maxn = 222222;

int n, m;
int o1[maxn], o2[maxn];
int o, x, cnt, sum, ans;

void solve() {
	memset(o1, 0, sizeof(o1));
	memset(o2, 0, sizeof(o2));
	cnt = 0;
	sum = 0;
	ans = -1;
	scanf("%d %d", &n, &m);
	for (int i = 1; i <= m; i++) {
		scanf("%d %d", &o, &x);
		if (o == 1) {
			if (o1[x] == 0 && sum - o2[x] == 0) {
//				printf("cnt++:i=%d, o=%d, x=%d, cnt=%d\n", i, o, x, cnt);
				cnt++;
			}
			o1[x]++;
		} else {
			if (o1[x] > 0 || sum - o2[x] > 0) {
				cnt = n;
			} else {
				cnt = n - 1;
			}
			sum++;
			o2[x]++;
		}
		if (cnt == n && ans == -1) {
			ans = i;
		}
	}
	printf("%d\n", ans);
} 

int main() {
	int t;
	scanf("%d", &t);
	for (int i = 0; i < t; i++) {
		solve();
	}
	return 0;
} 
2023/8/5 16:04
加载中...