結果

問題 No.2421 entersys?
ユーザー maple_1016maple_1016
提出日時 2023-08-12 14:51:56
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
RE  
実行時間 -
コード長 2,836 bytes
コンパイル時間 3,584 ms
コンパイル使用メモリ 206,344 KB
実行使用メモリ 12,800 KB
最終ジャッジ日時 2024-11-19 21:56:16
合計ジャッジ時間 10,230 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 10 ms
12,800 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 RE -
testcase_23 RE -
testcase_24 RE -
testcase_25 RE -
testcase_26 RE -
testcase_27 RE -
testcase_28 RE -
権限があれば一括ダウンロードができます

ソースコード

diff #

#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(2e5+10);
  map<string,int> aa;
  vector<vector<pii>> p(2e5+100);
  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));
    seg.updata(b,1);
    seg.updata(c+1,-1);
  }
  int q; cin>>q;
  vi d(2e5+10,0);
  rep(i,q){
    int c; cin>>c;
    if(c==1){
      string s; cin>>s;
      int t; cin>>t;
      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; cin>>t;
      cout<<seg.get(0,t)<<endl;
    } else {
      string s; cin>>s;
      int x,y; cin>>x>>y;
      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);
    }
  }
}
0