結果
| 問題 |
No.2540 同値性判定
|
| コンテスト | |
| ユーザー |
👑 |
| 提出日時 | 2023-07-29 23:31:16 |
| 言語 | cLay (20241019-1) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,203 bytes |
| コンパイル時間 | 4,074 ms |
| コンパイル使用メモリ | 201,952 KB |
| 実行使用メモリ | 82,408 KB |
| 最終ジャッジ日時 | 2024-10-08 10:41:08 |
| 合計ジャッジ時間 | 10,403 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 16 TLE * 1 -- * 20 |
ソースコード
// 誤解法(64並列なし、vector<bool>使用)チェック
#pragma GCC optimize("unroll-loops")
vector<bool>T(64,true);vector<bool>F(64,false);
struct U{vector<bool>a,b;bool c;U(vector<bool>A=T,vector<bool>B=F,bool C=false):a(A),b(B),c(C){};};
vector<bool>O(const U&b,const vector<bool>&a){vector<bool>c(64);rep(d,64){c[d]=(b.c?!a[d]:a[d])&b.a[d]|b.b[d];}return c;}
void C(const U&f,U&b){if(f.c){b.a.flip();b.b.flip();b.c=!b.c;swap(b.a,b.b);rep(d,64)b.b[d]=b.b[d]&&b.a[d]&&f.a[d]||f.b[d],b.a[d]=b.a[d]&&f.a[d];}else{rep(d,64)b.a[d]=b.a[d]&&f.a[d],b.b[d]=b.b[d]&&f.a[d]||f.b[d];}}
{
ull@N,@Q,M=1000,h,l,r,x,y,m,n,u;
vector<bool>P[6],A[N],a;
U B[M]={},f;
rep(i,6)rep(d,64)P[i].push_back((d>>i)&1);
rep(i,N)A[i]=P[i%6];
string E="land",o;
rep(Q){
rd(h,o,l,r,x,y);
r++;y++;
a=O(B[h/M],A[h]);
f=o==E?U(a):U(T,a,o<E);
m=(l+M-1)/M;
n=max(m,r/M);
u=min(m*M,r);
if(m){rep(i,m*M-M,min(m*M,N))A[i]=O(B[m-1],A[i]);B[m-1]=U();}
rep(i,l,u)A[i]=O(f,A[i]);
rep(j,m,n)C(f,B[j]);
rep(i,n*M,min(n*M+M,N))A[i]=O(B[n],A[i]);
if(n*M<N)B[n]=U();
rep(i,max(u,n*M),r)A[i]=O(f,A[i]);
set<vector<bool>>X;
o="No";
rep(i,x,y){
a=O(B[i/M],A[i]);
if(X.count(a)){o="Yes";break;}
X.insert(a);
}
wt(o);
}
}