結果
| 問題 | No.3752 No Use Crying Over Suffixes |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-10-02 22:36:37 |
| 言語 | C++23 (gcc 15.3.0 + boost 1.92.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 117 ms / 2,000 ms |
| + 380µs | |
| コード長 | 2,501 bytes |
| 記録 | |
| コンパイル時間 | 2,471 ms |
| コンパイル使用メモリ | 340,016 KB |
| 実行使用メモリ | 9,908 KB |
| 最終ジャッジ日時 | 2026-10-02 22:36:46 |
| 合計ジャッジ時間 | 6,323 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge4_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 35 |
ソースコード
#include <bits/stdc++.h>
#define fi first
#define se second
#define rep(i,s,n) for (int i = (s); i < (n); ++i)
#define rrep(i,g,n) for (int i = (n)-1; i >= (g); --i)
#define all(a) a.begin(),a.end()
#define rall(a) a.rbegin(),a.rend()
#define len(x) (int)(x).size()
#define dup(x,y) (((x)+(y)-1)/(y))
#define pb push_back
#define eb emplace_back
#define Field(T) vector<vector<T>>
using namespace std;
using ll = long long;
using ull = unsigned long long;
template<typename T> using pq = priority_queue<T,vector<T>,greater<T>>;
using P = pair<int,int>;
template<class T>bool chmax(T&a,T b){if(a<b){a=b;return 1;}return 0;}
template<class T>bool chmin(T&a,T b){if(b<a){a=b;return 1;}return 0;}
int main() {
// map<vector<int>,int> mp;
// function<int(vector<int>)> f = [&](vector<int> v) {
// if (mp.contains(v)) return mp[v];
// if (v.empty()) return mp[v] = 0;
// int ret = 0;
// rep(i,0,len(v)) {
// --v[i];
// if (v[i] == 0) {
// ret |= 1-f({v.begin(), v.begin()+i});
// } else {
// ret |= 1-f(v);
// }
// ++v[i];
// }
// return mp[v] = ret;
// };
// int n;
// cin >> n;
// vector<int> a(n);
// rep(i,0,n) cin >> a[i];
// cout << f(a) << endl;
// int n, m;
// cin >> n >> m;
function<int(vector<int>)> solve = [&](vector<int> v) {
int n = len(v);
vector<int> x = {0};
rep(i,0,n) if (v[i] == 1) x.eb(i+1);
if (v.back() != 1) x.eb(n);
rep(i,0,len(x)-1) {
ll t = 0;
rep(j,x[i],x[i+1]) t += v[j];
if (t%2) return 1;
}
return 0;
};
// function<void(vector<int>,int)> g = [&](vector<int> v, int i) {
// if (i == len(v)) {
// // int t = 0;
// // for (int e : v) {
// // if (e == 1) break;
// // t += e;
// // }
// // if (t%2 == 0 || *min_element(all(v)) > 1) return;
// // for (int e : v) cout << e << " ";
// // cout << "-> " << f(v) << endl;
// // cout << f(v) << ":" << solve(v) << endl;
// if (solve(v) != f(v)) {
// for (int e : v) cout << e << " ";
// cout << "-> " << f(v) << endl;
// }
// return;
// }
// rep(j,1,m+1) {
// v[i] = j;
// g(v, i+1);
// }
// };
// rep(k,1,n+1) {
// vector<int> v(k, 0);
// g(v, 0);
// }
int t;
cin >> t;
while(t--) {
int n;
cin >> n;
vector<int> a(n);
rep(i,0,n) cin >> a[i];
if (solve(a)) cout << "Alice" << endl;
else cout << "Bob" << endl;
}
return 0;
}