AT_abc355_c 题解

思路

首先 aia_i 是第 ai1n\lfloor\frac{a_i-1}{n}\rfloor 行第 (ai1)modn(a_i-1)\bmod n 列的(此处均为 00 开始),然后每次添加点肯定不用整个都判断,只需要判断更改的部分即可。

代码

# include <bits/stdc++.h>
# define done {cout << i; return 0;}
using namespace std;
int n, t, x, y, sh[3005], sl[3005], s1, s2;
int main () {
	ios::sync_with_stdio (0);
	cin.tie (0);
	cout.tie (0);
	cin >> n >> t;
	for (int i = 1; i <= t; ++ i) {
		cin >> x;
		-- x, y = x % n, x /= n;
		if (++ sh[x] >= n)
			done;
		if (++ sl[y] >= n)
			done;
		if (x == y && ++ s1 >= n)
			done;
		if (x == n - y - 1 && ++ s2 >= n)
			done;
	}
	cout << "-1";
	return 0;
}
posted @ 2024-05-26 16:13  Vitamin_B  阅读(7)  评论(0)    收藏  举报  来源