AtCoder Regular Contest 103/AtCoder Beginner Contest 111 D問題 - Robot Arms

Source

AtCoder Regular Contest 103
AtCoder Beginner Contest 111
問題文 (ARC)
問題文 (ABC)

問題概要

省略

解法

省略

cLayversion 20190721-1)のコード

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

int N, X[1000], Y[1000];

int M, D[40];
char res[42]; int ress;

{
  int i, j, k, md;
  
  rd(N,(X,Y)(N));

  md = (X[0] + Y[0]) %% 2;
  rep(i,1,N) if( (X[i]+Y[i])%%2 != md ) break;
  if(i<N){
    wt(-1);
    return 0;
  }

  if(md==0) rep(i,N) X[i]++;
  if(md==0) D[M++] = 1;
  rep(i,31) D[M++] = (1<<i);

  wt(M);
  wt(D(M));

  rep(k,N){
    ress = 0;
    if(md==0) res[ress++] = 'L';

    rep(i,31){
      j = 1;
      if(i==30) j = 0;
      if(X[k]%2){
        if( ((X[k]+1)/2 + Y[k]/2) %% 2 == j ){
          res[ress++] = 'L';
          X[k]++;
        } else {
          res[ress++] = 'R';
          X[k]--;
        }
      } else {
        if( (X[k]/2 + (Y[k]+1)/2) %% 2 == j ){
          res[ress++] = 'D';
          Y[k]++;
        } else {
          res[ress++] = 'U';
          Y[k]--;
        }
      }
      X[k] /= 2;
      Y[k] /= 2;
    }

    wt(res);
  }

}

Current time: 2024年03月29日11時12分05秒
Last modified: 2019年07月27日04時30分47秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder AtCoder_Regular_Contest AtCoder_Beginner_Contest ARC103 ABC111 ARC_B ABC_D
トップページに戻る

Logged in as: unknown user (not login)

ログイン: