Pagini recente » Cod sursa (job #1774933) | Cowfood | Profil ELHoria | Cod sursa (job #1381696) | Cod sursa (job #2484956)
#include <fstream>
using namespace std;
ifstream fin ("trie.in");
ofstream fout ("trie.out");
int t, Max, n;
int val[2000005], m[2000005][30], v2[2000005];
string s;
void modific(int nod, int poz, int semn, int flag) {
if (poz == s.size()) {
val[nod] += semn;
v2[nod] += semn;
if (flag == 2)
Max = val[nod];
if (flag == 3 && v2[nod])
Max = poz;
return;
}
if (flag == 3 && v2[nod])
Max = poz;
if (!m[nod][s[poz] - 'a']) {
if (flag == 3)
return;
m[nod][s[poz] - 'a'] = ++n;
}
v2[nod] += semn;
modific(m[nod][s[poz] - 'a'], poz + 1, semn, flag);
}
int main() {
while (true) {
fin >> t >> s;
if (fin.eof())
break;
if (t == 0)
modific(0, 0, 1, 0);
if (t == 1)
modific(0, 0, -1, 1);
if (t == 2) {
Max = 0;
modific(0, 0, 0, 2);
fout << Max << '\n';
}
if (t == 3) {
Max = 0;
modific(0, 0, 0, 3);
fout << Max << '\n';
}
}
return 0;
}