C.Bit Transmission

ai0a_{i0} 表示当前位置回答 YES 的数量。

ai1a_{i1} 表示当前位置回答 NO 的数量。

输出 1-1 的情况:

i[0,n1] ai0=ai1\exists i \in[0,n - 1] \ a_{i0}=a_{i1} (ai0=ai1=1a_{i0}=a_{i1}=1 oror ai0=ai1=0a_{i0}=a_{i1}=0)

还有这种 11 那个位置可能是机器人说谎的结果 你也不知道它到底说没说谎 所以确定不了。

alt

#include <bits/stdc++.h>

using namespace std;

void solve() {
  int n;
  cin >> n;
  vector<vector<int>> a(n, vector<int>(2));
  for (int i = 0; i < 3 * n; i++) {
    int pos;
    string s;
    cin >> pos >> s;
    if (s == "YES") {
      a[pos][0]++;
    } else {
      a[pos][1]++;
    }
  }
  for (int i = 0; i < n; i++) {
    if (a[i][0] == a[i][1]) {
      cout << -1 << '\n';
      return;
    }
  }
  for (int i = 0; i < n; i++) {
    if (a[i][0] + a[i][1] == 1) {
      cout << -1 << '\n';
      return;
    }
  }
  for (int i = 0; i < n; i++) {
    if (a[i][0] > a[i][1]) {
      cout << 1;
    } else {
      cout << 0;
    }
  }
  cout << '\n';  
}

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  int tt = 1;
  //cin >> tt;
  while (tt--) {
    solve();
  }
  return 0;
}