제출 #1369051

#제출 시각아이디문제언어결과실행 시간메모리
1369051julia_08Guessing Game (EGOI23_guessinggame)C++20
0 / 100
366 ms1652 KiB
#include <bits/stdc++.h>
using namespace std;

int main(){
  cin.tie(0)->sync_with_stdio(0);

  int p, n; cin >> p >> n;

  int k = 2 * __lg(2 * n);
  // cout << "k = " << k << endl;

  if(p == 1){

    cout << 3 << endl;

    vector<int> vis(n, 0);

    int x = 0;

    for(int i=0; i<(n - k); i++){

      int a; cin >> a;
      
      x ^= a;
      cout << 1 << endl;

      vis[a] = 1;
     
    }

    vector<int> pos;

    for(int i=0; i<n; i++) if(!vis[i]) pos.push_back(i);

    // cout << "x = " << x << endl;

    vector<bool> bit(n, 0);

    for(int i=0; i<(k / 2); i++) bit[pos[i]] = (x & (1 << i));

    for(int i=(k - 1); i>=(k / 2); i--) bit[pos[i]] = (x & (1 << (k - 1 - i))); 

    for(int i=0; i<(k - 1); i++){

      int a; cin >> a;
      cout << bit[a] + 2 << endl;

    }

    return 0;

  }

  vector<int> bits;
  
  int z = 0;

  for(int i=0; i<n; i++){

    int a; cin >> a;

    if(a > 1) bits.push_back(a - 2);
    if(a == 1) z ^= i;

  }

  // cout << "z = " << z << endl;

  int x = z, y = z;

  for(int i=0; i<(k / 2); i++) x ^= (bits[i] * (1 << i));

  for(int i=(k - 2); i>=(k / 2 - 1); i--) y ^= (bits[i] * (1 << (k - 2 - i)));

  cout << x << " " << y << endl;

  return 0;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…