DISCO presents ディスカバリーチャンネル コードコンテスト2020 予選 E問題 - Majority of Balls

Source

DISCO presents ディスカバリーチャンネル コードコンテスト2020 予選
問題文

問題概要

省略

解法

省略

cLayversion 20191123-1)のコード

C++に変換後のコードはこちら

int N;
int ask[200];
int res[200];

void init(){
  scanf("%d", &N);
}

int query(){
  char buf[100];
  printf("?");
  rep(i,2N) if(ask[i]) printf(" %d", i+1);
  puts("");
  fflush(stdout);
  scanf("%s", buf);
  if(buf[0]=='R') return 0;
  return 1;
}

void answer(){
  char buf[300];
  rep(i,2N) buf[i] = if[res[i]==0, 'R', 'B'];
  buf[2N] = '\0';
  printf("! %s\n", buf);
}

{
  int k, f, x, y;

  init();

  rep(i,N) ask[i] = 1;
  f = query();

  k = bsearch_max[int,x,0,N][
    rep(i,2N) ask[i] = 0;
    rep(i,N) ask[x+i] = 1;
  ](query() == f);

  rep(i,2N) ask[i] = 0;
  rep(i,N-1) ask[k+1+i] = 1;

  rep(i,2N) if(ask[i]) res[i] = -1;
  rep(i,2N) if(!ask[i]){
    ask[i] = 1;
    res[i] = query();
    ask[i] = 0;
  }

  x = y = 0;
  rep(i,2N){
    ask[i] = 0;
    if(res[i]==0 && x < N/2) ask[i] = 1, x++;
    if(res[i]==1 && y < N/2) ask[i] = 1, y++;
  }

  rep(i,2N) if(res[i]==-1){
    ask[i] = 1;
    res[i] = query();
    ask[i] = 0;
  }

  answer();
}

Current time: 2021年09月25日01時04分45秒
Last modified: 2019年11月23日23時21分21秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder
トップページに戻る

Logged in as: unknown user (not login)

ログイン: