QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#586946 | #8940. Piggy Sort | zhouhuanyi | WA | 1ms | 3836kb | C++17 | 1.9kb | 2024-09-24 16:42:40 | 2024-09-24 16:42:41 |
Judging History
answer
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define N 500
using namespace std;
int read()
{
char c=0;
int sum=0,f=1;
while (c!='-'&&(c<'0'||c>'9')) c=getchar();
if (c=='-') c=getchar(),f=-1;
while ('0'<=c&&c<='9') sum=sum*10+c-'0',c=getchar();
return sum*f;
}
int T,n,m,X[N+1][N+1],sX[N+1][N+1],p[N+1],ans[N+1],num[N+1];
long long t[N+1],st[N+1];
bool cmp(int x,int y)
{
return st[x]<st[y];
}
int main()
{
long long b,d,ds;
int ps,a;
bool op;
T=read();
while (T--)
{
n=read(),m=read(),op=0;
for (int i=1;i<=n;++i) num[i]=i;
for (int i=1;i<=m;++i)
for (int j=1;j<=n;++j)
sX[i][j]=read();
for (int i=1;i<=m;++i)
{
st[i]=0;
for (int j=1;j<=n;++j) st[i]+=sX[i][j]-sX[1][j];
}
for (int i=1;i<=m;++i) p[i]=i;
sort(p+1,p+m+1);
for (int i=1;i<=m;++i)
{
t[i]=st[p[i]];
for (int j=1;j<=n;++j) X[i][j]=sX[p[i]][j];
}
for (int i=1;i<=m-1;++i)
if (t[i]==t[i+1])
op=1;
if (op)
{
for (int i=1;i<=n;++i) printf("%d ",i);
puts("");
continue;
}
for (int i=1;i<=n;++i)
{
a=-1,b=1,d=0;
for (int j=2;j<=m;++j)
for (int k=1;k<=n-i+1;++k)
{
ds=X[j][k]-((__int128)(X[j][k]-X[j-1][k])*t[j])/(t[j]-t[j-1]);
if ((__int128)(X[j][k]-X[j-1][k])*b>(__int128)(a)*(t[j]-t[j-1])||((__int128)(X[j][k]-X[j-1][k])*b==(__int128)(a)*(t[j]-t[j-1])&&ds>d)) a=X[j][k]-X[j-1][k],b=t[j]-t[j-1],d=ds;
}
for (int j=1;j<=n-i+1;++j)
if (X[1][j]==d)
{
ans[num[j]]=n-i+1;
break;
}
for (int j=1;j<=m;++j)
{
ps=0;
for (int k=1;k<=n-i+1;++k)
if (X[j][k]==d+((__int128)(a)*t[j])/b)
{
ps=k;
break;
}
for (int k=ps;k<=n-i;++k) X[j][k]=X[j][k+1];
if (j==1)
{
for (int k=ps;k<=n-i;++k) num[k]=num[k+1];
}
}
}
for (int i=1;i<=n;++i) printf("%d ",ans[i]);
puts("");
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3764kb
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:
ok 3 lines
Test #2:
score: -100
Wrong Answer
time: 1ms
memory: 3836kb
input:
41 1 2 -19 9531 2 3 11 13 3175 4759 2211 3313 10 19 -54 -25 -19 -18 -1 3 61 63 85 88 -54 753 863 2397 3111 4649 4671 4756 5507 7762 -54 369 479 1245 1575 2345 2367 2452 2819 3922 -54 553 663 1797 2311 3449 3471 3556 4107 5762 -54 87 197 399 447 653 675 760 845 1102 -54 320 430 1098 1379 2051 2073 21...
output:
1 1 2 1 2 6 10 5 7 9 4 3 8 8 7 5 9 2 1 6 3 4 1 6 5 9 8 2 3 10 4 7 3 5 10 6 7 4 9 8 2 1 4 3 1 8 2 5 6 7 3 1 5 2 6 9 8 7 4 10 2 3 1 4 3 2 9 1 4 6 7 5 8 1 5 2 6 7 3 4 8 9 9 8 5 7 2 3 4 6 1 9 8 5 7 2 3 10 6 9 10 9 8 5 7 9 3 10 6 4 10 7 8 1 2 5 6 3 9 4 8 1 2 7 6 9 3 5 4 8 1 2 4 5 10 9 3 6...
result:
wrong answer 13th lines differ - expected: '1 2 4 8 5 7 10 6 9 3', found: '9 8 5 7 2 3 10 6 9 10 '