Cod sursa(job #2484956)

Utilizator Iulia25Hosu Iulia Iulia25 Data 31 octombrie 2019 20:05:27
Problema Trie Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#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;
}