Pagini recente » Cod sursa (job #1365579) | Cod sursa (job #2105239) | Cod sursa (job #161641) | Cod sursa (job #2364914) | Cod sursa (job #2514749)
#include <bits/stdc++.h>
#define ll long long
#define all(a) (a).begin(), (a).end()
//#pragma GCC optimize("O3")
//#pragma GCC optimize("Ofast")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define sz() size()
#define fr first
#define sc second
#define pb push_back
#define er erase
#define in insert
#define pi pair<int,int>
#define pii pair<pair<int,int>,int>
#define mp make_pair
#define int long long
#define rc(s) return cout<<s,0
#define rcc(s) cout<<s,exit(0)
using namespace std;
const int mod=1e9+7;
const int modx=998244353;
const int per=666013;
ifstream fin("trie.in");
ofstream fout("trie.out");
int x,indx;
string s;
struct Trie{
int val,next[26],app;
Trie(){
app=0;
val=0;
memset(next,0,sizeof(next));
}
}tz;
vector<Trie>vecc;
void inser(string s1){
int curr=0;
vecc[curr].app++;
for(int i=0;i<s1.size();i++){
int c = (s1[i]-'a');
if(vecc[curr].next[c]==0){
vecc[curr].next[c]=(++indx);
vecc.push_back(tz);
}
curr=vecc[curr].next[c];
vecc[curr].app++;
if(i==s1.size()-1) vecc[curr].val++;
}
}
void delet(string s1){
int curr=0;
vecc[curr].app--;
for(int i=0;i<s1.size();i++){
int c=(s1[i]-'a');
curr=vecc[curr].next[c];
vecc[curr].app--;
if(i==s1.size()-1) vecc[curr].val--;
}
}
void ans(string s1){
int curr=0;
for(int i=0;i<s1.size();i++){
int c = (s1[i]-'a');
if(vecc[curr].next[c]==0){
fout << 0 << '\n';
break;
}
curr=vecc[curr].next[c];
if(i==s1.size()-1) fout << vecc[curr].val << '\n';
}
}
void ans2(string s1){
int curr=0,anst=0;
for(int i=0;i<s1.size();i++){
int c=(s1[i]-'a');
if(vecc[curr].next[c]==0) break;
curr=vecc[curr].next[c];
if(vecc[curr].app>0) anst=(i+1);
}
fout << anst << '\n';
}
int32_t main(){
//ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0);
srand(chrono::steady_clock::now().time_since_epoch().count());
vecc.push_back(tz);
while(fin >> x >> s){
if(x==0) inser(s);
if(x==1) delet(s);
if(x==2) ans(s);
if(x==3) ans2(s);
}
}