挺简单的一道题,但是做的时候没想好就开始写代码了,导致迷之WA,还是要多练习啊。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <set>
#define LL long long int
using namespace std;
LL Map[][];
int main() {
cin.sync_with_stdio(false);
int n;
while(cin>>n)
{
int x,y;
LL sumy[],sumx[],sum[]={,};
for(int i=;i<n;i++)
{
sumy[i]=sumx[i]=;
for(int j=;j<n;j++)
{
cin>>Map[i][j];
if(Map[i][j]==)
y=i,x=j;
}
}
//特判1
if(n==)
{
cout<<<<endl;
continue;
}
for(int i=;i<n;i++)
for(int j=;j<n;j++)
{
sumx[j]+=Map[i][j],sumy[i]+=Map[i][j];
if(i==j)
sum[]+=Map[i][j];
if(i==(n-j-))
sum[]+=Map[i][j];
}
set<LL> s;
set<LL>::iterator it;
LL flag=,more=,less=;
s.insert(sum[]),s.insert(sum[]);
for(int i=;i<n;i++)
s.insert(sumx[i]),s.insert(sumy[i]);
if(s.size()>)//超过两种就GG
flag=;
if(s.size()==)//保证和0点关联的都是较小的反之较大
{
it=s.begin();
more=*it;
it++;
less=*it;
if(more<less)
swap(more,less);
for(int i=;i<n;i++)
{
if(i==x)
{
if(sumx[i]!=less)
flag=;
}
else
if(sumx[i]!=more)
flag=;
if(i==y)
{
if(sumy[i]!=less)
flag=;
}
else
if(sumy[i]!=more)
flag=;
}
if(x==y)
{
if(sum[]!=less)
flag=;
}
else
if(sum[]!=more)
flag=;
if(x==n-y-)
{
if(sum[]!=less)
flag=;
}
else
if(sum[]!=more)
flag=;
}
else if(s.size()==)//0点必须在中心
{
if(n%!=||x!=n/||y!=n/)
flag=;
}
if(flag)
cout<<more-less<<endl;
else
cout<<-<<endl;
}
return ;
}

最新文章

  1. Java知识结构
  2. C# 一些常用的技巧代码
  3. 高仿700Bike的界面图片
  4. LIS(nlogn) POJ 3903 Stock Exchange
  5. [iOS微博项目 - 2.5] - 封装授权和用户信息读写业务
  6. IT项目量化管理:细化、量化与图形化 与 中国IT项目实施困惑
  7. 秒味课堂Angular js笔记------$scope.$watch和$scope.$apply
  8. ORACLE表空间
  9. JAVA的IO学习
  10. jq交叉淡入淡出轮播图
  11. java查看程序执行时间
  12. Axure RP初学
  13. Android源码解析——LruCache
  14. [Codeforces757G]Can Bash Save the Day?——动态点分治(可持久化点分树)
  15. 一道并查集的(坑)题:关闭农场closing the farm
  16. php中类继承和接口继承的对比
  17. [Unity工具]查找GameObject在场景中所有被引用的地方
  18. Javascript - LayUI库的流加载
  19. Typora 自定义主题 修改左右间距
  20. 【Linux】VirtualBox安装ubuntu排错LowGraphic

热门文章

  1. IO(基础知识)
  2. Linux基础命令---bzcat
  3. JavaScript的 基本数据类型---对象
  4. appium自动化测试实战
  5. Linux Touch命令的8种使用技巧
  6. NSDictionary打印编码改中文的方法
  7. elasticsearch分词器ik
  8. TensorFlow 之 手写数字识别MNIST
  9. windows下的 gvim - su&#39;blime text 的使用
  10. C Looooops(扩展欧几里得)题解