1 solutions

  • 0
    @ 2025-4-16 18:25:33

    首先将坐标转成(n1)×(n1)(n-1)\times(n-1)的格子,每次标记一个数,就标记对应的行列和对角线,如果某次恰好标记n次了,就达成了bingo

    #include<bits/stdc++.h>
    using namespace std;
    const int N=2e3+10;
    int row[N],col[N],dg[2*N],ndg[2*N];
    int main()
    {
    	int n,m;
    	cin>>n>>m;
    	for(int i=1;i<=m;i++)
    	{
    		int x;
    		cin>>x;
    		x--;
    		int r=x/n,c=x%n;
    		row[r]++;
    		col[c]++;
    		dg[r-c+N]++;
    		ndg[r+c]++;
    		//cout<<row[r]<<" "<<col[c]<<" "<<r<<" "<<c<<endl;
    		if(row[r]==n||col[c]==n||dg[r-c+N]==n||ndg[r+c]==n)
    		{
    			cout<<i;
    			return 0;
    		}
    	}
    	cout<<-1;
    	return 0;
    }
    
    • 1

    Information

    ID
    2465
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    3
    Tags
    (None)
    # Submissions
    1
    Accepted
    1
    Uploaded By