結果
問題 | No.2540 同値性判定 |
ユーザー |
👑 |
提出日時 | 2023-07-29 22:15:51 |
言語 | cLay (20241019-1) |
結果 |
AC
|
実行時間 | 27 ms / 2,500 ms |
コード長 | 825 bytes |
コンパイル時間 | 3,023 ms |
コンパイル使用メモリ | 187,940 KB |
実行使用メモリ | 13,760 KB |
最終ジャッジ日時 | 2024-10-08 08:33:41 |
合計ジャッジ時間 | 7,533 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 37 |
ソースコード
struct U{ull a,b;bool c;U(ull A=-1,ull B=0,bool C=false):a(A),b(B),c(C){};}; ull O(const U& b,const ull& a){return (b.c?~a:a)&b.a|b.b;} void C(const U& f,U& b){b=f.c?U(~b.b&f.a,~b.a&~b.b&f.a|f.b,!b.c):U(b.a&f.a,b.b&f.a|f.b,b.c);} { ull@N,@Q,P[6]={},M=1000,A[N],h,l,r,x,y,a,m,n,u;U B[M]={},f; rep(i,6)rep(d,64)P[i]+=((d>>i)&1ULL)<<d; 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(-1,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<ull>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); } }