Cod sursa(job #2684012)

Utilizator Xutzu358Ignat Alex Xutzu358 Data 12 decembrie 2020 14:37:18
Problema Trie Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.24 kb
#include <bits/stdc++.h>
using namespace std;

ifstream f("trie.in");
ofstream g("trie.out");

multiset < string > ums;
int op;
string cuv;
multiset < string > :: iterator it1;
multiset < string > :: iterator it2;
int maxmax;

void common_prefix(string s1, string s2) {
    int maxpref = 0;
    for (int i=0;i<s2.size() && i<s1.size();i++) {
        if (s1[i]==s2[i]) {
            maxpref++;
        }
        else {
            break;
        }
    }
    maxmax = max(maxmax,maxpref);
}

int main()
{
    while (f >> op) {
        f >> cuv;
        if (op==0) {
            ums.insert(cuv);
        }
        else if (op==1) {
            ums.erase(ums.find(cuv));
        }
        else if (op==2) {
            g << ums.count(cuv) << '\n';
        }
        else {
            ums.insert(cuv);
            it1 = ums.find(cuv);
            it2 = it1;
            maxmax = 0;
            if (it1 != ums.begin()) {
                it1--;
                common_prefix(*it1,cuv);
            }
            if (it2 != --ums.end()) {
                it2++;
                common_prefix(*it2,cuv);
            }
            ums.erase(ums.find(cuv));
            g << maxmax <<  '\n';
        }
    }
    return 0;
}