結果
問題 | No.2148 ひとりUNO |
ユーザー |
![]() |
提出日時 | 2022-12-07 15:40:15 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 30 ms / 2,000 ms |
コード長 | 1,684 bytes |
コンパイル時間 | 5,710 ms |
コンパイル使用メモリ | 314,856 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-13 21:41:58 |
合計ジャッジ時間 | 7,849 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 39 |
ソースコード
//#include <bits/stdc++.h>#include <atcoder/all>using namespace std;using namespace atcoder;using ll = long long;#define rep(i, n) for (int i=0; i<(int)(n); ++(i))#define rep3(i, m, n) for (int i=(m); (i)<(int)(n); ++(i))#define repr(i, n) for (int i=(int)(n)-1; (i)>=0; --(i))#define rep3r(i, m, n) for (int i=(int)(n)-1; (i)>=(int)(m); --(i))#define all(x) (x).begin(), (x).end()const string tar = "BGR";int main() {int t0;cin >> t0;rep(i0, t0) {int n;cin >> n;vector<vector<bool>> cd(3, vector<bool>(n));rep(i, n) {char cti;int ci, di;cin >> cti >> di;ci = tar.find(cti);di--;cd[ci][di] = true;}vector<int> ids;rep(i, 3) if (count(all(cd[i]), true) > 0) ids.push_back(i);if ((int)(ids.size()) == 1) cout << "YES" << endl;else if ((int)(ids.size()) == 2) {bool ok = false;rep(i, n) if (cd[ids[0]][i] && cd[ids[1]][i]) {ok = true;break;}if (ok) cout << "YES" << endl;else cout << "NO" << endl;}else {bool single = false;rep(i, 3) if (count(all(cd[i]), true) == 1) single = true;vector<vector<bool>> cd2;rep(i1, 3) {rep3(j1, i1+1, 3) {vector<bool> tcd(n);rep(i, n) if (cd[i1][i] && cd[j1][i]) tcd[i] = true;cd2.push_back(tcd);}}bool ok = false;rep(i1, 3) if (count(all(cd2[i1]), true) >= 1) {rep3(j1, i1+1, 3) if (count(all(cd2[j1]), true) >= 1) {int bcnt = 0;rep(i, n) if (cd2[i1][i] || cd2[j1][i]) ++bcnt;if (bcnt>=2 || (single&&bcnt==1)) {ok = true;break;}}if (ok) break;}if (ok) cout << "YES" << endl;else cout << "NO" << endl;}}return 0;}