Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma comment(linker, "/STACK:256000000")
- #define _CRT_SECURE_NO_WARNINGS
- #define _CRT_SECURE_NO_DEPRECATE
- #include<iostream>
- #include<cstdio>
- #include<cstdlib>
- #include<string>
- #include<cstring>
- #include<algorithm>
- #include<cmath>
- #include <set>
- #include <queue>
- #include <map>
- #include <vector>
- #include <unordered_map>
- #include <assert.h>
- using namespace std;
- #define mp make_pair
- #define pub push_back
- #define con continue
- #define forn(i, n) for (int i = 0; i < int(n); ++i)
- #define fornr(i, n) for (int i = n - 1; i >= 0; --i)
- #define forab(i, a, b) for (int i = (a); i <= int(b); ++i)
- typedef long long ll;
- typedef pair <int, int> pii;
- typedef vector <int> vi;
- typedef vector < pii > vii;
- typedef vector < vector < int> > vvi;
- typedef vector < vector < pair < int, int > > > vvii;
- const int ZEROS = (int)(1E+5 + 100);
- const int INF = (int)1E+9;
- struct vertex{
- vertex* next[30];
- int cnt;
- bool is_end;
- vertex() {
- forn(i, 30)
- next[i] = 0;
- cnt = 0;
- is_end = false;
- }
- };
- typedef vertex* pvertex;
- pvertex root;
- int cnt_lev[ZEROS];
- void add_string(pvertex v, vi &s) {
- forn(i, (int)s.size()) {
- if (!v->next[s[i]]) {
- v->next[s[i]] = new vertex();
- cnt_lev[i + 1]++;
- }
- v = v->next[s[i]];
- v->cnt++;
- }
- v->is_end = true;
- }
- void delete_string(pvertex v, vi &s) {
- forn(i, (int)s.size()) {
- v = v->next[s[i]];
- v->cnt--;
- if (!v->cnt)
- cnt_lev[i + 1]--;
- }
- }
- void solve(int type) {
- if (type == 1 || type == 2) {
- string S;
- cin >> S;
- vi s;
- forn(i, (int)S.size())
- s.pub(S[i] - 'a');
- if (type == 1)
- add_string(root, s);
- else
- delete_string(root, s);
- }
- else {
- int k, ans = 0;
- cin >> k;
- cout << cnt_lev[k] << endl;
- }
- }
- int main() {
- #ifdef _DEBUG
- freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
- #endif
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- int n, type;
- cin >> n;
- root = new vertex();
- cnt_lev[0]++;
- forn(q, n) {
- cin >> type;
- solve(type);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement