QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#478512 | #8485. Magic Square | rania__# | WA | 0ms | 3772kb | C++23 | 2.8kb | 2024-07-15 03:54:30 | 2024-07-15 03:54:30 |
Judging History
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