QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#557930#5095. 九王唱syxsyx0 1ms4116kbC++141.1kb2024-09-11 12:24:472024-09-11 12:24:47

Judging History

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

  • [2024-09-11 12:24:47]
  • 评测
  • 测评结果:0
  • 用时:1ms
  • 内存:4116kb
  • [2024-09-11 12:24:47]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N=5005;
int n,seed;
int a[N*2][N];
void gen(int n,int seed){
    std::mt19937 rnd(seed);
    for(int i=1;i<=n;++i){
        for(int j=1;j<=n+1;++j){
            a[i][j]=j;
            std::swap(a[i][j],a[i][rnd()%j+1]);
        }
    }
}
int ans[N];
int del[N];
int tmp[N];
int tag[N];
int srt[N];
void update(int x)
{
	for(int i=1;i<=n+1;i++) srt[a[x][i]]=i;
	int now=1;
	tmp[1]=srt[now];
	for(int i=1;i<=n;i++)
	{
		if(del[i]!=tmp[1]&&i<n){tmp[i+1]=del[i];continue;}
		for(int j=i+1;j<=n;j++) tmp[j]=del[j];
		break;
	}
	memcpy(del,tmp,sizeof(del));
	memset(tag,0,sizeof(tag));
	for(int i=1;i<=n;i++) tag[del[i]]=1;
	if(x<=n) for(int i=1;i<=n+1;i++) if(!tag[i]) ans[x]=i;
//	printf("%d %d:",x,ans[x]);
//	for(int i=1;i<=n;i++) printf("%d ",del[i]);
//	printf("\n");
}
int main()
{
	scanf("%d%d",&n,&seed);
	if(seed) gen(n,seed);
	else
	{
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n+1;j++) scanf("%d",&a[i][j]);
	}
	for(int i=1;i<=n;i++) memcpy(a[n+i],a[i],sizeof(a[n+i]));
	for(int i=n*2;i>=1;i--) update(i);
	for(int i=1;i<=n;i++) printf("%d ",ans[i]);
	printf("\n");
}

详细

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 4116kb

input:

8 0
6 1 3 2 9 7 8 4 5
6 1 3 2 9 7 8 4 5
6 1 3 2 9 7 8 4 5
6 1 3 2 9 7 8 4 5
6 1 3 2 9 7 8 4 5
6 1 3 2 9 7 8 4 5
6 1 3 2 9 7 8 4 5
6 1 3 2 9 7 8 4 5

output:

9 9 9 9 9 9 9 9 

result:

wrong answer 1st numbers differ - expected: '5', found: '9'

Subtask #2:

score: 0
Skipped

Dependency #1:

0%

Subtask #3:

score: 0
Skipped

Dependency #1:

0%

Subtask #4:

score: 0
Skipped

Dependency #1:

0%