QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#557911#5095. 九王唱syxsyx0 1ms4116kbC++141.0kb2024-09-11 12:15:322024-09-11 12:15:33

Judging History

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

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

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;
	memset(tag,0,sizeof(tag));
	int now=n+1;
	tmp[1]=srt[now];
	for(int i=1;i<=n;i++)
	{
		tag[del[i]]=1;
		while(tag[srt[now]]==1) now--;
		if(i<n) tmp[i+1]=srt[now];
	}
	memcpy(del,tmp,sizeof(del));
	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:

2 2 2 2 2 2 2 2 

result:

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

Subtask #2:

score: 0
Skipped

Dependency #1:

0%

Subtask #3:

score: 0
Skipped

Dependency #1:

0%

Subtask #4:

score: 0
Skipped

Dependency #1:

0%