답안 #357688

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
357688 2021-01-24T12:49:04 Z urd05 Colors (BOI20_colors) C++14
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h>
using namespace std;

int main(void) {
    long long n;
    scanf("%lld",&n);
    if (n<=125) {
        long long one=(n-1)/4+1;
        long long two=(3*n-1)/4+1;
        printf("? %lld\n",two);
        fflush(stdout);
        int got;
        scanf("%d",&got);
        printf("? %lld\n",one);
        fflush(stdout);
        scanf("%d",&got);
        long long ret;
        if (got==0) {
            int l=one-1+n-two;
            int d=two-one;
            ret=n;
            for(int i=0;i<l;i++) {
                long long nt=(two<one?two-1:two+1);
                printf("? %lld\n",nt);
                fflush(stdout);
                scanf("%d",&got);
                if (got==1) {
                    ret=d+i+1;
                    break;
                }
                two=one;
                one=nt;
            }
        }
        else {
            int l=two-one;
            ret=1;
            for(int i=l-1;i>0;i--) {
                int nt=(two<one?two+1:two-1);
                printf("? %lld\n",nt);
                fflush(stdout);
                scanf("%d",&got);
                if (got==0) {
                    ret=i+1;
                    break;
                }
                two=one;
                one=nt;
            }
        }
        printf("= %lld\n",ret);
        fflush(stdout);
        return 0;
    }
    long long prev=0;
    long long d=0;
    int got;
    for(int i=29;i>0;i--) {
        long long nd=d+(1<<i)-1;
        if (nd>=n) {
            continue;
        }
        printf("%lld\n",nd);
        long long one=(n+1)/2-nd/2;
        long long two=(n+1)/2+(nd+1)/2;
        s.insert(one);
        s.insert(two);
        printf("? %lld\n",two);
        fflush(stdout);
        scanf("%d",&got);
        printf("? %lld\n",one);
        fflush(stdout);
        scanf("%d",&got);
        if (got==0) {
            d+=(1<<i);
        }
        prev=one;
    }
    printf("? %lld\n",prev+d);
    fflush(stdout);
    scanf("%d",&got);
    if (got==0) {
        d++;
    }
    printf("= %lld\n",d);
    fflush(stdout);
}

Compilation message

Colors.cpp: In function 'int main()':
Colors.cpp:40:30: warning: format '%lld' expects argument of type 'long long int', but argument 2 has type 'int' [-Wformat=]
   40 |                 printf("? %lld\n",nt);
      |                           ~~~^    ~~
      |                              |    |
      |                              |    int
      |                              long long int
      |                           %d
Colors.cpp:66:9: error: 's' was not declared in this scope
   66 |         s.insert(one);
      |         ^
Colors.cpp:6:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    6 |     scanf("%lld",&n);
      |     ~~~~~^~~~~~~~~~~
Colors.cpp:13:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   13 |         scanf("%d",&got);
      |         ~~~~~^~~~~~~~~~~
Colors.cpp:16:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   16 |         scanf("%d",&got);
      |         ~~~~~^~~~~~~~~~~
Colors.cpp:26:22: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   26 |                 scanf("%d",&got);
      |                 ~~~~~^~~~~~~~~~~
Colors.cpp:42:22: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   42 |                 scanf("%d",&got);
      |                 ~~~~~^~~~~~~~~~~
Colors.cpp:70:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   70 |         scanf("%d",&got);
      |         ~~~~~^~~~~~~~~~~
Colors.cpp:73:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   73 |         scanf("%d",&got);
      |         ~~~~~^~~~~~~~~~~
Colors.cpp:81:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   81 |     scanf("%d",&got);
      |     ~~~~~^~~~~~~~~~~