Cod sursa(job #1939308)

Utilizator alexmisto342Turdean Alexandru alexmisto342 Data 25 martie 2017 16:39:24
Problema Zeap Scor 0
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Semestrul 2 Marime 1.66 kb
#include <iostream>
#include <map>
#include <algorithm>
#include <string>
#define x first
#define y second
#define mp make_pair
using namespace std;

int n,m,i,j,a,b;
map<string,int> mymap;
map<string,int> :: iterator it;
string s[100005];
int raspuns[200005];
int main()
{
    string x="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    n=100000;
    m=200000;
    for(i = 1; i <= n; i++)
        //fin >> s[i];
    {
        x[ i%40 ] = char(97 + i%26);
        s[i] = x;
    }
    sort(s+1, s+1+n);
    x = x.substr(0,x.size()-1);
    for(i = 1; i <= m; i++)
    {
        string t;
        //fin >> t;
        x[ i%39 ] = char(97 + i%26);
        t = x;
        it = mymap.find(t);
        if(it != mymap.end())
        {
            raspuns[i] = -(it->y);
            it->y = i;
        }
        else
            mymap.insert(mp(t,i));
    }
    for(i = 1; i <= n; i++)
    {
        string t = s[i].substr(1);
        it = mymap.find(t);
        if(it != mymap.end())
        {
            a = it->y;
            mymap.erase(it);
            while(a)
            {
                b = raspuns[a];
                raspuns[a] = i;
                a = -b;
            }
        }
        for(j = 0; j < s[i].size()-1; j++)
        {
            t[j] = s[i][j];
            it = mymap.find(t);
            if(it != mymap.end())
            {
                a = it->y;
                mymap.erase(it);
                while(a)
                {
                    b = raspuns[a];
                    raspuns[a] = i;
                    a = -b;
                }
            }
        }
    }
    string z;

    return 0;
}