QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#489285#8819. CNOI KnowledgeLYY_yyyyWA 1ms3632kbC++141.1kb2024-07-24 19:19:042024-07-24 19:19:04

Judging History

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

  • [2024-07-24 19:19:04]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3632kb
  • [2024-07-24 19:19:04]
  • 提交

answer

#include<bits/stdc++.h>
#define pb emplace_back
#define lowbit(x) (x&(-x))
using namespace std;
unordered_map<int,int> s;
const int base=13331,mod=1e9+9;
int ha[1010],mi[1010];
int n;
int dp[1010],x[1010],idx;
int ask(int l,int r)
{
	cout<<"? "<<l<<' '<<r<<endl;
	int c;cin>>c;
	return c;
}
inline int get_(int l,int r)
{
	return (ha[r]-1ll*ha[l-1]*mi[r-l+1]%mod+mod)%mod;
}
inline void modify(int l,int r)
{
	x[l]++;x[r+1]--;
}
int main()
{
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	cin>>n;mi[0]=1;
	for(int i=1;i<=n;i++) mi[i]=1ll*mi[i-1]*base%mod;
	for(int i=1;i<=n;i++)
	{
		int l=1,r=i-1,ans=0;
		while(l<=r) 
		{
			int mid=l+r>>1;
			if(ask(mid,i)-dp[mid]!=i-mid+1) ans=mid,l=mid+1;
			else r=mid-1;
		}
		int p;
		if(!ans) p=++idx;
		else p=get_(ans,ans);
		ha[i]=(1ll*ha[i-1]*base+p)%mod;
		memset(x,0,sizeof(x));
		for(int j=i;j>=1;j--)
		{
			int op=get_(j,i);
			modify(s[op],j);
			s[op]=j;
		}
		for(int j=1;j<=i;j++) x[j]+=x[j-1],dp[j]+=x[j];
	}
	cout<<"! ";
	for(int i=1;i<=n;i++) cout<<get_(i,i)<<' ';
	cout<<endl;
	return 0;
}

详细

Test #1:

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

input:

12
3
6
6
10
10
15
10
21
15
27
20
14
6
9
20
34
27
19
9
5
2
25
8
5
3
25
9
19
13

output:

? 1 2
? 1 3
? 2 4
? 1 4
? 2 5
? 1 5
? 3 6
? 1 6
? 3 7
? 1 7
? 2 7
? 4 8
? 6 8
? 5 8
? 4 9
? 2 9
? 3 9
? 5 10
? 7 10
? 8 10
? 9 10
? 5 11
? 8 11
? 9 11
? 10 11
? 6 12
? 9 12
? 7 12
? 8 12
! 1 2 3 4 5 6 2 5 2 2 2 5 

result:

wrong answer Wrong Answer.