結果
問題 | No.2421 entersys? |
ユーザー | maple_1016 |
提出日時 | 2023-08-12 16:03:35 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 3,736 bytes |
コンパイル時間 | 3,813 ms |
コンパイル使用メモリ | 227,016 KB |
実行使用メモリ | 63,544 KB |
最終ジャッジ日時 | 2024-11-20 04:58:17 |
合計ジャッジ時間 | 26,589 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 11 ms
23,892 KB |
testcase_01 | AC | 12 ms
24,040 KB |
testcase_02 | AC | 15 ms
24,160 KB |
testcase_03 | AC | 12 ms
24,032 KB |
testcase_04 | AC | 13 ms
24,128 KB |
testcase_05 | RE | - |
testcase_06 | AC | 14 ms
24,232 KB |
testcase_07 | AC | 14 ms
24,216 KB |
testcase_08 | AC | 15 ms
24,208 KB |
testcase_09 | AC | 18 ms
24,356 KB |
testcase_10 | AC | 14 ms
24,080 KB |
testcase_11 | RE | - |
testcase_12 | RE | - |
testcase_13 | RE | - |
testcase_14 | RE | - |
testcase_15 | RE | - |
testcase_16 | RE | - |
testcase_17 | RE | - |
testcase_18 | RE | - |
testcase_19 | RE | - |
testcase_20 | RE | - |
testcase_21 | RE | - |
testcase_22 | AC | 888 ms
50,616 KB |
testcase_23 | RE | - |
testcase_24 | RE | - |
testcase_25 | RE | - |
testcase_26 | RE | - |
testcase_27 | RE | - |
testcase_28 | RE | - |
ソースコード
#pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include<bits/stdc++.h> #define rep(i,n) for(ll i=0;i<(n);++i) #define reps(i,n) for(ll i=1;i<=(n);++i) #define repr(i,n) for(ll i=2;i*i<=(n);++i) #define ll long long #define all(x) (x).begin(),(x).end() #define sz(x) ((string)(x).size()) #define pb push_back #define pob pop_back() #define MMod (ll)1000000007 #define mmod (ll)998244353 #define setp(x) setprecision((ll)(x)) #define INF (ll)(1000000000000000000) #define mp make_pair using namespace std; using pii=pair<int, int>; using pll=pair<ll,ll>; using vi=vector<int>; using vc=vector<char>; using vb=vector<bool>; using vl=vector<long long>; using vvi=vector<vi>; using vvl=vector<vl>; using vvc=vector<vc>; using vvb=vector<vb>; using vpi=vector<pii>; using vpl=vector<pair<ll,ll>>; using vs=vector<string>; using pqi=priority_queue<int>; vpi fs={mp(1,0),mp(-1,0),mp(0,1),mp(0,-1)}; struct segment{ vector<ll> value; int N; segment(int n){ N=1; while(N<n){ N*=2; } value.resize(N*2); for(int i=0;i<N*2;i++){ value[i]=0; } } void updata(int i,ll x){ i+=N-1; value[i]+=x; while(i>0){ i=(i-1)/2; value[i]=(value[i*2+1]+value[i*2+2]); } } ll quety(int a,ll b,int k,int l,int r){ if(r<=a||b<=l){ return(0); } if(a<=l&&r<=b){ return(value[k]); }else{ ll c1=quety(a,b,2*k+1,l,(l+r)/2); ll c2=quety(a,b,2*k+2,(l+r)/2,r); return(c1+c2); } } ll get(int a,ll b){ return(quety(a,b+1,0,0,N)); } }; int main(){ int n; cin>>n; int k=1; segment seg(5e5+10); map<string,int> aa; vector<vector<pii>> p(5e5+100); vpi pp; vi ppp; rep(i,n){ string a; cin>>a; int b,c; cin>>b>>c; if(aa[a]==0){ aa[a]=k; k++; } p[aa[a]].pb(mp(b,c)); pp.pb(mp(b,c)); ppp.pb(b); ppp.pb(c); } int qq; cin>>qq; vvi q(qq,vi(3)); map<int,string> ss; rep(i,qq){ cin>>q[i][0]; if(q[i][0]==1) { string v; cin>>v; cin>>q[i][1]; ss[i]=v; } else if(q[i][0]==2) { cin>>q[i][1]; ppp.pb(q[i][1]); } else if(q[i][0]==3) { string v; cin>>v; ss[i]=v; cin>>q[i][1]>>q[i][2]; ppp.pb(q[i][1]); ppp.pb(q[i][2]); } } int jj=1; map<int,int> aaa; sort(all(ppp)); rep(i,ppp.size()){ if(aaa[ppp[i]]==0){ aaa[ppp[i]]=jj; jj++; } } rep(i,pp.size()){ int g=aaa[pp[i].first],h=aaa[pp[i].second]; seg.updata(g,1); seg.updata(h+1,-1); } vi d(2e5+10,0); rep(i,qq){ int c=q[i][0]; if(c==1){ string s=ss[i]; int t=q[i][1]; if(aa[s]==0) { aa[s]=k; k++; cout<<"No"<<endl; continue; } int kk=aa[s]; if(p[kk].size()==0){ cout<<"No"<<endl; continue; } if(d[kk]==0) { sort(all(p[kk])); d[kk]=1; } int ok=0,ng=p[kk].size(); if(p[kk][0].first>t){ cout<<"No"<<endl; continue; } while(ng-ok>1){ int j=(ok+ng)/2; if(p[kk][j].first>t) ng=t; else ok=t; } if(p[kk][ok].second>=t) cout<<"Yes"<<endl; else cout<<"No"<<endl; } else if(c==2){ int t=aaa[q[i][1]]; cout<<seg.get(0,t)<<endl; } else if(c==3){ string s=ss[i]; int xx=q[i][1],yy=q[i][2]; int x=aaa[q[i][1]],y=aaa[q[i][2]]; if(aa[s]==0){ aa[s]=k; k++; } p[aa[s]].pb(mp(xx,yy)); d[aa[s]]=0; seg.updata(x,1); seg.updata(y+1,-1); } } }