Advertisement
Zeinab_Hamdy

Untitled

Sep 29th, 2024
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.14 KB | None | 0 0
  1. //  #### Zeinab
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. #define nl "\n"
  5. #define fi first
  6. #define se second
  7. #define pb push_back
  8. #define ll long long
  9. #define RV return void
  10. #define sz(x) int(x.size())
  11. #define all(v) v.begin(), v.end()
  12. #define rall(v) v.rbegin(), v.rend()
  13. #define cin(v) for(auto&x:v) cin >> x;
  14. #define cout(v) for(auto&x:v) cout << x << " ";
  15.  
  16.  
  17.  
  18. map < pair < int , int > , int > mp;
  19.  
  20. struct Trie{
  21.     Trie * nxt[26];
  22.  
  23.     Trie(){
  24.         memset(nxt, 0, sizeof nxt);
  25.     }
  26.  
  27.     void insert(string s){
  28.         int idx=0;
  29.         Trie *temp = this;
  30.         for(int i = sz(s) -1 ; i >=0 ; i--){
  31.             int t = s[i]-'a';
  32.             if(!temp->nxt[t]){
  33.                 temp->nxt[t] = new Trie();
  34.             }
  35.             temp = temp -> nxt[t];
  36.             idx++;
  37.  
  38.             mp[{idx,t}]++;
  39.         }
  40.     }
  41.  
  42.  
  43.     void del(string s){
  44.         int idx=0;
  45.         Trie *temp = this;
  46.         for(int i = sz(s) -1 ; i >=0 ; i--){
  47.             int t = s[i]-'a';
  48.             temp = temp -> nxt[t];
  49.             idx++;
  50.            
  51.             mp[{idx,t}]--;
  52.         }
  53.     }
  54.  
  55.    
  56. };
  57.  
  58.  
  59.  
  60. void solve(){
  61.  
  62.    Trie root;
  63.    int n,op , idx , k , len;
  64.    cin >> n;
  65.    mp.clear();
  66.    vector < string > q(n);
  67.    vector < bool >vis(n,0);
  68.  
  69.  
  70.    for(int i =0 ; i < n ; i++){
  71.        cin >> op;
  72.        if(op==1){
  73.            cin >> q[i];
  74.            root.insert(q[i]);
  75.        }
  76.        else if(op==2){
  77.             cin >> k >> len ;
  78.  
  79.             bool ok= false;
  80.             for(int i =0 ; i < 26 ; i++){
  81.                 if(mp[{len,i}] >= k){
  82.                     ok=true;
  83.                     break;
  84.                 }
  85.             }
  86.  
  87.             cout << (ok ? "YES" : "NO") << nl;
  88.  
  89.        }
  90.        
  91.        else{
  92.            cin >> idx;
  93.            --idx;
  94.            if(!vis[idx])
  95.                 root.del(q[idx]);
  96.  
  97.             vis[idx]=1;
  98.        }
  99.    }
  100.  
  101.  
  102.  
  103. }
  104.  
  105. int main(){
  106.     ios_base::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);  
  107.     int t=1;
  108.         // cin >> t ;
  109.     for(int i=1 ; i <= t ; i++){
  110.         // cout << "Case #"<< i <<": ";
  111.         solve();
  112.     }
  113.     return 0;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement