QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#488726 | #8819. CNOI Knowledge | zyxawa | WA | 1ms | 3792kb | C++14 | 703b | 2024-07-24 14:40:01 | 2024-07-24 14:40:02 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
int n,x,s[1001],v[1001],a[1001];
unsigned long long val;
map <unsigned long long,int> lst;
int ask(int l,int r){
printf("? %d %d\n",l,r);
fflush(stdout);
scanf("%d",&x);
return x;
}
int main(){
scanf("%d",&n);
for(int i=2;i<=n;i++){
memset(a,0,sizeof(a));
int l=1,r=i;
while(l<r){
int mid=(l+r)/2;
if(ask(mid,i)!=v[mid]+i-mid+1) l=mid+1;
else r=mid;
}
s[i]=l>1?s[l-1]:i,val=0;
for(int j=i;j>=1;j--) val=val*13131+s[j],a[lst[val]+1]++,a[j+1]--,lst[val]=j;
for(int j=1;j<=i;j++) a[j]+=a[j-1];
for(int j=1;j<=i;j++) v[j]+=a[j];
}
printf("! ");
for(int i=1;i<=n;i++) printf("%d ",s[i]);
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 3792kb
input:
12 3 3 6 3 6 3 10 3 10 3 14 6 3 14 6 3 19 5 2 19 5 3 25 9 3
output:
? 1 2 ? 2 3 ? 2 4 ? 3 4 ? 3 5 ? 4 5 ? 3 6 ? 5 6 ? 4 7 ? 6 7 ? 4 8 ? 6 8 ? 7 8 ? 5 9 ? 7 9 ? 8 9 ? 5 10 ? 8 10 ? 9 10 ? 6 11 ? 9 11 ? 10 11 ? 6 12 ? 9 12 ? 11 12 ! 0 0 0 0 0 0 0 0 0 0 0 0
result:
wrong answer Integer 0 violates the range [1, 10^9]