Cod sursa(job #3177311)

Utilizator paull122Paul Ion paull122 Data 28 noiembrie 2023 22:09:33
Problema Trie Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.57 kb
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
ifstream fin("trie.in");
ofstream fout("trie.out");

int trie[100001][26];
int pos=1;
int isword[100001];
int cnt[100001];
int main()
{
    int t;
    string s;
    while(fin >> t >> s)
    {
        if(t==0)
        {
            int p=1;
            for(int i=0;i<s.size();i++)
            {
                int c= s[i]-'a';
                if(trie[p][c])
                {
                    p = trie[p][c];
                }
                else
                {
                    trie[p][c]=++pos;
                    p=trie[p][c];
                }
                cnt[p]++;
            }
            isword[p]++;
        }
        if(t==1)
        {
            int p=1;
            for(int i=0;i<s.size();i++)
            {
                int c = s[i]-'a';
                p=trie[p][c];
                cnt[p]--;
            }
            if(p)isword[p]--;
            //cout << p << " ";
        }
        if(t==2)
        {
            int p=1;
            for(char i : s)
            {
                int c=i-'a';
                p = trie[p][c];
            }
            fout << isword[p] << "\n";
        }
        if(t==3)
        {
            int p=1,k=0;
            for(char i : s)
            {
                int c=i-'a';
                p=trie[p][c];
                if(cnt[p])k++;
                else
                {
                    break;
                }
            }
            fout << k << "\n";
        }
    }


}