QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#605551 | #8940. Piggy Sort | qiuuu | RE | 0ms | 0kb | C++14 | 1.5kb | 2024-10-02 17:54:43 | 2024-10-02 17:54:43 |
answer
#include<bits/stdc++.h>
using namespace std;
const int N=509;
int n,m,t,sum[N];
int a[N][N],ans[N];
bool vis[N][N];
pair<int,int> su[N];
int main()
{
freopen("1.txt","w",stdout);
scanf("%d",&t);
while(t--)
{
memset(vis,0,sizeof(vis));
memset(sum,0,sizeof(sum));
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
for(int j=1;j<=n;j++)
sum[i]+=a[i][j];
}
if(m==1||sum[1]==sum[2]||n==1)
{
for(int i=1;i<=n;i++) printf("%d ",i);
puts("");
continue;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(vis[2][j]) continue;
long long x=a[2][j]-a[1][i],v=a[2][j];
if(x<0) continue;
int y=sum[2]-sum[1];
int fg=0;
for(int k=3;k<=m;k++)
{
if(x*(sum[k]-sum[k-1])%y) break;
long long u=x*(sum[k]-sum[k-1])/y;
v+=u;
int uu=lower_bound(a[k]+1,a[k]+n+1,v)-a[k];
int vv=upper_bound(a[k]+1,a[k]+n+1,v)-a[k];
bool flg=0;
for(int j=uu;j<vv;j++)
{
if(!vis[k][j])
{
vis[k][j]=1;
flg=1;
break;
}
}
if(!flg) break;
if(k==m) fg=1;
}
if(fg==1)
{
su[i]=make_pair(x,i);
break;
}
}
}
sort(su+1,su+n+1);
for(int i=1;i<=n;i++) ans[su[i].second]=i;
for(int i=1;i<=n;i++) printf("%d ",ans[i]);
puts("");
}
}
/*
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
*/
詳細信息
Test #1:
score: 0
Dangerous Syscalls
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