QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#830056#8940. Piggy SortQBFRE 0ms0kbC++141.3kb2024-12-24 15:44:522024-12-24 15:44:53

Judging History

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

  • [2024-12-24 15:44:53]
  • 评测
  • 测评结果:RE
  • 用时:0ms
  • 内存:0kb
  • [2024-12-24 15:44:52]
  • 提交

answer

#include<bits/stdc++.h>
#define ci const int
#define ll long long
using namespace std;
ci N=505;
int n,m,x[N][N],v[N],id[N],rk[N];
ll sum[N];
map<int,bool>mp[N];
bool vis[N];
inline bool cmp(ci x,ci y){
	return v[x]!=v[y]?v[x]<v[y]:x<y;
}
bool check(ci s,ci d){
	for(int i=3;i<=m;++i){
		ll val=(sum[i]-sum[1])*d;
		if(val%(sum[2]-sum[1])!=0)return 0;
		val/=sum[2]-sum[1],val+=s;
		if(mp[i].find(val)==mp[i].end())return 0;
	}
	return 1;
}
void Init(){
	for(int i=1;i<=m;++i)sum[i]=0,mp[i].clear(),vis[i]=0;
}
void Work(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;++i)
		for(int j=1;j<=n;++j)
			scanf("%d",&x[i][j]),sum[i]+=x[i][j],mp[i][x[i][j]]=1;
	if(sum[1]==sum[2]){
		for(int i=1;i<=n;++i)printf("%d ",i);
		puts("");
		return;
	}
	for(int i=1;i<=n;++i){
		int cnt=0;
		for(int j=1;j<=n;++j){
			if(check(x[1][i],x[2][j]-x[1][i]))++cnt;
			if(!vis[j]&&check(x[1][i],x[2][j]-x[1][i])){
				vis[j]=1,v[i]=x[2][j]-x[1][i];
				// printf("i=%d j=%d v=%d\n",i,j,v[i]);
				break;
			}
		}
		assert(cnt==1);
	}
	for(int i=1;i<=n;++i)id[i]=i;
	sort(id+1,id+n+1,cmp);
	for(int i=1;i<=n;++i)rk[id[i]]=i;
	for(int i=1;i<=n;++i)printf("%d ",rk[i]);
	puts("");
}
int main(){
	int T;scanf("%d",&T);
	while(T--)Work(),Init();
	return 0;
}

详细

Test #1:

score: 0
Runtime Error

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:


result: