QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#580713 | #8940. Piggy Sort | Forever_Young# | WA | 0ms | 3848kb | C++14 | 1.8kb | 2024-09-21 23:17:44 | 2024-09-21 23:17:45 |
Judging History
answer
#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mp make_pair
using namespace std;
const int inf=10000000;
int t,n,m,a[550][550],v[550],r[550];
LL sum[550];
map<int,int> b[550];
pair<int,int> c[550];
int match(int x,int y,int z,int dep){
if (dep==m) return 1;
if (1ll*(a[1][y]-a[0][x])*(sum[dep]-sum[0])%(sum[1]-sum[0])!=0) return 0;
LL tmp=1ll*(a[1][y]-a[0][x])*(sum[dep]-sum[0])/(sum[1]-sum[0])+a[0][x];
if (tmp<-inf||tmp>inf) return 0;
//printf("%d %d %d %d %lld\n",x,y,z,dep,tmp);
if (b[dep][int(tmp)]>=z){
b[dep][int(tmp)]-=z;
if (!match(x,y,z,dep+1)){
b[dep][int(tmp)]+=z;
return 0;
}
return 1;
}
return 0;
}
int dfs(int x){
if (x==n) return 1;
for (int j=0;j<n;j++){
if (match(x,j,1,1)){
v[x]=j;
if (dfs(x+1)) return 1;
match(x,j,-1,1);
}
}
return 0;
}
int main(){
scanf("%d",&t);
while (t--){
scanf("%d%d",&n,&m);
for (int i=0;i<m;i++){
sum[i]=0;
b[i].clear();
for (int j=0;j<n;j++){
scanf("%d",&a[i][j]);
sum[i]+=a[i][j];
b[i][a[i][j]]+=1;
}
}
if (sum[1]==sum[0]){
for (int i=0;i<n;i++) printf("%d ",i+1);
}
else{
dfs(0);
for (int i=0;i<n;i++){
//printf("%d %d\n",i,v[i]);
c[i]=mp(a[1][v[i]]-a[0][i],i);
}
sort(c,c+n);
for (int i=0;i<n;i++) r[c[i].se]=i;
for (int i=0;i<n;i++) printf("%d ",r[i]+1);
printf("\n");
}
for (int i=0;i<m;i++)
for (int j=0;j<n;j++)
b[i][a[i][j]]=0;
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3848kb
input:
3 2 4 1 2 3 4 5 6 7 8 1 2 1 1 3 4 1 2 3 6 9 9 10 15 17 12 18 21
output:
1 2 1 3 1 2
result:
wrong answer 2nd lines differ - expected: '1', found: '1 3 1 2 '