B - Chris and Magic Square

46 ms   2400 KB
#include<iostream>
#include<functional>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<stdlib.h>
#include<vector>
#include<queue>
#include<deque>
#include<map>
#include<set>
#include<time.h>
using namespace std;

#define pi(x,y) printf("%d%c",(x),(y));
#define pin(x) printf("%d\n",(x));
#define pln(x) printf("\n");
#define si(x) scanf("%d",&(x))
#define sii(x,y) scanf("%d%d",&(x),&(y))
#define s3(x,y,z) scanf("%d%d%d",&(x),&(y),&(z))
#define rep(x,y,z) for(int (x)=(y);(x)<(z);++(x))
#define dep(x,y,z) for(int (x)=(y)-1;(x)>=(z);--(x))
#define read int TcaseN;scanf("%d",&TcaseN);for(int Tcase=1;Tcase<=TcaseN;++Tcase)
#define cls(x,y) memset((x),(y),sizeof((x)));
#define cl(x) memset((x),0,sizeof((x)));
#define pb(x) push_back(x)
#define mp(x,y) make_pair((x),(y))
#define max3(value_a,value_b,value_c) max(max(value_a,value_b),value_c)
#define min3(value_a,value_b,value_c) min(min(value_a,value_b),value_c)

///In This You Can Define Long Integer Type
#define LONGTYPE long long
typedef LONGTYPE LL;
typedef unsigned LONGTYPE ULL;

const int inf=0x3f3f3f3f;
const double PI=acos(-1.0);
const int maxn=1e5+5;

template <class T>
inline bool Read(T &ret) {
    char c; int sgn;
    if(c=getchar(),c==EOF) return 0; //EOF
    while(c!='-'&&(c<'0'||c>'9')) c=getchar();
    sgn=(c=='-') ?-1:1 ;
    ret=(c=='-') ?0:(c -'0');
    while(c=getchar(),c>='0'&&c<='9')
        ret=ret*10+(c-'0');
    ret*=sgn;
    return 1;
}

void Out(int a)
{    //輸出外掛
    if(a < 0)
    {
        putchar('-');
        a = -a;
    }
    if(a >= 10)
        Out(a / 10);
    putchar(a % 10 + '0');
}

int main() {
    int i,j,N,n,m,t;
    Read(N);
    LL mag[550][550];
    LL hang[550];
    LL lie[550];
    rep(i,0,N){//i from 0 to N-1
        rep(j,0,N){
            Read(mag[i][j]);
            hang[i]+=mag[i][j];
            lie[j]+=mag[i][j];
            if (mag[i][j]==0)
            {
                n=i;m=j;
            }
        }
    }
    LL sav;
    if (n!=N-1)
        sav=hang[n+1]-hang[n];
    else
        sav=hang[n-1]-hang[n];
    mag[n][m]=sav;
    LL sie=0;
    LL qie=0;
    cl(hang);cl(lie);
    rep(i,0,N){//i from 0 to N-1
        rep(j,0,N){
            if (i==j)
            {
                sie+=mag[i][j];
            }
            if (i+j==N-1)
            {
                qie+=mag[i][j];
            }
            hang[i]+=mag[i][j];
            lie[j]+=mag[i][j];
        }
    }
    rep(i,0,N){//i from 0 to N-1
        if (qie==sie)
        {
            if (hang[i]==lie[i]&&hang[i]==qie)
            {
                continue;
            }
            else{
                pin(-1);
                return 0;
            }
        }
        else{
            pin(-1);
            return 0;
        }
    }
    if(N==1)
    {
        pin(1);
        return 0;
    }
    if(sav<=0) {
        pin(-1);
        return 0;
    }
    printf("%I64d\n",sav);
    return 0;
}```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容