Submission #1030438

#TimeUsernameProblemLanguageResultExecution timeMemory
1030438sleepntsheepColors (BOI20_colors)C11
0 / 100
0 ms344 KiB
#define CF_SUBWAY_SURFER #include<stdio.h> #include<math.h> #include<stdlib.h> int h(int i,int j){return i>j?i:j;} int h_(int i,int j){return -h(-i,-j);} int a_,past_ask[66],b_; int ask(long long c){for(int j=0;j<b_;++j)if(past_ask[j]==c)return 0;past_ask[b_++]=c;printf("? %lld\n",c);fflush(stdout);scanf("%d",&a_);return a_;} #define report(x) do{printf("= %lld\n",(long long)(x));fflush(stdout);goto X;}while(0) int main(){ int t; #ifndef CF_SUBWAY_SURFER t=1; #else scanf("%d",&t); #endif while(t--){ b_=0; long long n; scanf("%lld",&n); if(n==1)report(1); if(n<=64){ ask(1); if(!ask(n))report(n); for(int r=n-1,l=2,d=n-1,i=1,cc=0;cc<n-2;++i,--d,++cc)if((i%2&&!ask(l++)) || (i%2==0&&!ask(r--)))report(d); report(1); } if(n<=125){ int m = n / 2 + 1; ask(m); int mid = ask(1); if (!ask(n))report(n); if(mid){ for(int r=m-1,l=2,d=m-1,i=1,cc=0;d>1;++i,--d,++cc) if(i%2&&!ask(l++))report(d); else if(i%2==0&&!ask(r--))report(d); report(1); }else{ for(int r=n-1,l=2,d=n-1,i=1,cc=0;d>1;++i,--d,++cc){ if(i%2){ if(l==m)report(1); if(!ask(l++))report(d); } else{ if(r==m)report(1); else if(!ask(r--)) report(d); } } report(1); } } if(n<=1000){ int S=34,m=n/2+1; ask(m); if (ask(m+1))report(1); ask(m); int ll=m,rr=m; for(int ii=1;;++ii){ if(ii%2){ ll=h(ll-S,1); if(ask(ll)){ for(int r=rr-1,l=ll+1,d=rr-ll,i=0;d>1;++i,--d){ if(i%2){ if(!ask(l++))report(d); } else{ if(!ask(r--))report(d); } } report(rr-ll); } }else{ rr=h_(rr+S,n); if(ask(rr)){ for(int r=rr-1,l=ll+1,d=rr-ll,i=1;d>1;++i,--d){ if(i%2){ if(!ask(l++))report(d); } else{ if(!ask(r--))report(d); } } report(rr-ll); } } if (ll==1&&rr==n) report(n); } report(n); } else if(n<=1e18){ } X:; } }

Compilation message (stderr)

Colors.c: In function 'ask':
Colors.c:8:123: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
    8 | int ask(long long c){for(int j=0;j<b_;++j)if(past_ask[j]==c)return 0;past_ask[b_++]=c;printf("? %lld\n",c);fflush(stdout);scanf("%d",&a_);return a_;}
      |                                                                                                                           ^~~~~~~~~~~~~~~
Colors.c: In function 'main':
Colors.c:15:5: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |     scanf("%d",&t);
      |     ^~~~~~~~~~~~~~
Colors.c:20:9: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |         scanf("%lld",&n);
      |         ^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...