4 solutions

  • -1
    @ 2026-7-8 13:59:04

    #include<bits/stdc++.h> using namespace std; int a[2010][2010]={-1},b[20010]; int main() { int n,t; cin>>n>>t; for(int i=1;i<=t;i++){ int x; cin>>x; //b[i]=x; if(x%n0) a[x/n][n]=0; else a[x/n+1][x%n+1]=0; //若n为奇数 if(n%2!=0){ int A=n/2+1,cnt=0; //横向 for(int i=1;i<=n;i++){ if(a[A][i]0) cnt++; } if(cntn && i<=5) { cout<<i; return 0; } //纵向 int cnt1=0; for(int i=1;i<=n;i++){ if(a[i][A]0) cnt1++; } if(cntn && i<=5) { cout<<i; return 0; } //副对角线 int B=A-n/2,cnt2=0; for(int i=1;i<=n;i++){ if(a[B][i]0) cnt2++; B++; } if(cnt2n && i<=5) { cout<<i; return 0; } //主对角线 int C=A+n/2,cnt3=0; for(int i=1;i<=n;i++){ if(a[B][i]0) cnt3++; C--; } if(cnt3n && i<=5) { cout<<i; return 0; } } //若n为偶数 if(n%20){ //纵向 int cnt4=0; for(int j=1;j<=n;j++){ for(int k=1;k<=n;k++){ if(a[j][k]0) cnt4++; } } if(cnt4n && i<=5){ cout<<i; return 0; } //横向 int cnt5=0; for(int j=1;j<=n;j++){ for(int k=1;k<=n;k++){ int cnt=0; if(a[k][j]0) cnt5++; } } if(cnt5n && i<=5){ cout<<i; return 0; } } } cout<<-1; return 0; }

    Information

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