AT1999 [AGC002E] Candy Piles
https://www.luogu.com.cn/problem/AT1999
考虑将 a a a从大到小排序
每次操作相当于是删掉最左边的一列,或最下面的一行
然后转换成从(0,0)开始,每次向上或向右走一格走到边界就输了
把SG换书的标打出来大概是这样
然后直接找左下角为原点的最大的正方形即可
code:
#include<bits/stdc++.h>
using namespace std;
int cmp(int x, int y) {
return x > y;
}
int n, a[1000050];
int main() {
scanf("%d", &n);
for(int i = 1; i <= n; i ++) scanf("%d", &a[i]);
sort(a + 1, a + 1 + n, cmp);
for(int i = 1; i <= n; i ++) if(i + 1 > a[i + 1]) {
int j = 0;
while(a[i + j + 1] == i) j ++;
if((j & 1) || (a[i] - i & 1)) printf("First");
else printf("Second");
return 0;
}
return 0;
}