QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#478512#8485. Magic Squarerania__#WA 0ms3772kbC++232.8kb2024-07-15 03:54:302024-07-15 03:54:30

Judging History

你现在查看的是最新测评结果

  • [2024-07-15 03:54:30]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3772kb
  • [2024-07-15 03:54:30]
  • 提交

answer

#pragma GCC optimize("O3,unroll-loops")
#include <bits/stdc++.h>
using namespace std;
typedef int in;
#define int long long
#define double long double
#define f first
#define s second
#define pb push_back
#define pp push
#define ceill(x,y) ((x/y)+(x%y!=0)*(x/abs(x)*y/abs(y)<0?0:1))
#define floorr(x,y) ((x/y)+(x%y!=0)*(x/abs(x)*y/abs(y)<0?-1:0))
#define YN(x) cout<<(x?"YES\n":"NO\n");
#define Yn(x) cout<<(x?"Yes\n":"No\n");
#define yn(x) cout<<(x?"yes\n":"no\n");
const int MAAX=1e18;
const int MOD=1e9+7;
const int MAX=1e9;

int n,arr[1010][1010];
map<int,int> mp,mp2;
bool check(){
	vector<int> v;
	for(int i=0;i<n;i++){
		int sum=0;
		for(int j=0;j<n;j++){
			sum+=arr[i][j];
		}
		v.pb(sum);
	}
	for(int i=0;i<n;i++){
		int sum=0;
		for(int j=0;j<n;j++){
			sum+=arr[j][i];
		}
		v.pb(sum);
	}
	sort(v.begin(),v.end());
	return v[0]==v.back();
}

in main(){
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int tc=1;
    // cin>>tc;
    while(tc--){
		cin>>n;
		mp.clear();
		mp2.clear();
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++)
				cin>>arr[i][j];
		}
		vector<int> r,c;
		for(int i=0;i<n;i++){
			int sum=0;
			for(int j=0;j<n;j++){
				sum+=arr[i][j];
			}
			if(mp[sum]<3)
				r.pb(i);
			mp[sum]++;
		}
		for(int i=0;i<n;i++){
			int sum=0;
			for(int j=0;j<n;j++){
				sum+=arr[j][i];
			}
			if(mp2[sum]<3)
				c.pb(i);
			mp2[sum]++;
		}
		for(int i=0;i<r.size();i++){
			for(int j=0;j<c.size();j++){
				for(int k=0;k<r.size();k++){
					for(int l=0;l<c.size();l++){
						swap(arr[r[i]][c[j]],arr[r[k]][c[l]]);
						if(check()){
							cout<<r[i]+1<<" "<<c[j]+1<<"\n"<<r[k]+1<<" "<<c[l]+1<<"\n";
							goto a;
						}
						swap(arr[r[i]][c[j]],arr[r[k]][c[l]]);
					}
				}
			}
		}
		for(int i=0;i<r.size();i++){
			for(int j=0;j<r.size();j++){
				int sum1=0;
				for(int k=0;k<n;k++)
					sum1+=arr[r[i]][k];
				int sum2=0;
				for(int k=0;k<n;k++)
					sum2+=arr[r[j]][k];
				for(int k=0;k<n;k++){
					if(sum1+arr[r[i]][k]-arr[r[j]][k]==sum2+arr[r[j]][k]-arr[r[i]][k]){
						swap(arr[r[i]][k],arr[r[j]][k]);
						if(check()){
							cout<<r[i]+1<<" "<<k+1<<"\n"<<r[j]+1<<" "<<k+1<<"\n";
							goto a;
						}
						swap(arr[r[i]][k],arr[r[j]][k]);
					}
				}
			}
		}
		for(int i=0;i<c.size();i++){
			for(int j=0;j<c.size();j++){
				int sum1=0;
				for(int k=0;k<n;k++)
					sum1+=arr[k][c[i]];
				int sum2=0;
				for(int k=0;k<n;k++)
					sum2+=arr[k][c[j]];
				for(int k=0;k<n;k++){
					if(sum2+arr[k][c[i]]-arr[k][c[j]]==sum1+arr[k][c[j]]-arr[k][c[i]]){
						swap(arr[k][c[i]],arr[k][c[j]]);
						if(check()){
							cout<<k+1<<" "<<c[i]+1<<"\n"<<k+1<<" "<<c[j]+1<<"\n";
							goto a;
						}
						swap(arr[k][c[i]],arr[k][c[j]]);
					}
				}
			}
		}
		a:;
    }
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3552kb

input:

3
6 9 2
3 5 7
8 1 4

output:

1 1
3 3

result:

ok OK

Test #2:

score: 0
Accepted
time: 0ms
memory: 3572kb

input:

4
16 3 2 13
5 10 11 8
9 6 7 12
1 15 14 4

output:

2 1
2 4

result:

ok OK

Test #3:

score: 0
Accepted
time: 0ms
memory: 3772kb

input:

3
8 1 6
3 5 7
4 2 9

output:

3 2
3 3

result:

ok OK

Test #4:

score: 0
Accepted
time: 0ms
memory: 3640kb

input:

4
9 12 7 6
4 2 14 15
16 13 1 3
5 8 11 10

output:

2 2
3 3

result:

ok OK

Test #5:

score: -100
Wrong Answer
time: 0ms
memory: 3556kb

input:

5
15 17 1 8 24
3 10 19 21 12
16 23 7 14 6
22 4 13 20 5
9 11 25 2 18

output:


result:

wrong output format Unexpected end of file - int32 expected