結果

問題 No.2308 [Cherry 5th Tune B] もしかして、真?
ユーザー shobonvip
提出日時 2023-05-19 21:52:39
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 232 ms / 2,000 ms
コード長 1,735 bytes
コンパイル時間 4,401 ms
コンパイル使用メモリ 256,416 KB
最終ジャッジ日時 2025-02-13 01:48:59
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 39
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include<bits/stdc++.h>
#include<atcoder/all>
using namespace std;
using namespace atcoder;
typedef modint998244353 mint;
typedef long long ll;
// importbisect
template <typename T>
int bisect_left(vector<T> &X, T v){
return lower_bound(X.begin(), X.end(), v) - X.begin();
}
template <typename T>
int bisect_right(vector<T> &X, T v){
return upper_bound(X.begin(), X.end(), v) - X.begin();
}
// -----
int dat;
bool hantei(int x){
return x < dat;
}
int op(int a, int b){
return a + b;
}
int e(){
return 0;
}
void solve(){
int n; cin >> n;
vector<string> x(n), y(n-1);
vector<int> s(n);
for (int i=0; i<n; i++){
cin >> x[i];
}
for (int i=0; i<n-1; i++){
cin >> y[i];
}
vector<bool> f(n);
for (int i=0; i<n; i++){
if (x[i] == "True") f[i] = true;
}
segtree<int,op,e> seg1(n);
segtree<int,op,e> seg2(n-1);
for (int i=0; i<n; i++){
seg1.set(i, 1);
}
for (int i=0; i<n-1; i++){
seg2.set(i, 1);
}
for (int i=0; i<n-1; i++){
cin >> s[i];
s[i]--;
dat = s[i] + 1;
int x1 = seg1.max_right<hantei>(0);
int z = seg2.max_right<hantei>(0);
dat++;
int x2 = seg1.max_right<hantei>(0);
if (y[z] == "and"){
if (f[x1] && f[x2]) f[x1] = true;
else f[x1] = false;
}else if (y[z] == "or"){
if (f[x1] || f[x2]) f[x1] = true;
else f[x1] = false;
}else if (y[z] == "xor"){
if ((f[x1] && !f[x2]) || (!f[x1] && f[x2])) f[x1] = true;
else f[x1] = false;
}else{
if (f[x1]){
f[x1] = f[x2];
}else{
f[x1] = true;
}
}
seg1.set(x2, 0);
seg2.set(z, 0);
}
dat = 1;
int x3 = seg1.max_right<hantei>(0);
if (f[x3]) cout << "True\n";
else cout << "False\n";
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t; cin >> t;
while(t--) solve();
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0