結果
問題 | No.2421 entersys? |
ユーザー | maple_1016 |
提出日時 | 2023-08-12 15:19:07 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 3,508 bytes |
コンパイル時間 | 3,788 ms |
コンパイル使用メモリ | 232,748 KB |
実行使用メモリ | 72,992 KB |
最終ジャッジ日時 | 2024-11-20 01:15:59 |
合計ジャッジ時間 | 27,106 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 11 ms
23,936 KB |
testcase_01 | RE | - |
testcase_02 | RE | - |
testcase_03 | RE | - |
testcase_04 | RE | - |
testcase_05 | RE | - |
testcase_06 | RE | - |
testcase_07 | RE | - |
testcase_08 | RE | - |
testcase_09 | RE | - |
testcase_10 | RE | - |
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 | 811 ms
58,060 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,ll> aa; vector<vector<pll>> p(5e5+100); vpl pp; vl 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<ll,ll> 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]; int kk=aa[s]; 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 { string s=ss[i]; int x=aaa[q[i][1]],y=aaa[q[i][2]]; if(aa[s]==0){ aa[s]=k; k++; } p[aa[s]].pb(mp(x,y)); d[aa[s]]=0; seg.updata(x,1); seg.updata(y+1,-1); } } }