Codeforces Beta Round #67 (Div. 2) Problem B

Link: B. Facetook Priority Wall

This is my solution.

bool comp(const pair<int, string>&a, const pair<int, string>&b){
    if(a.first != b.first) return a.first > b.first;
    return a.second < b.second;
}

int main(){
    int n = 0;
    string s, ch;
    getline(cin, s, 'n');
    getline(cin, ch, 'n');
    for(int i=0; i<ch.size() ;i++)
        n=n*10+ch[i]-'0';
    map<string, int> mapa;
    for(int i=0; i<n ;i++){
        getline(cin, ch, 'n');
        stringstream ss(ch);
        vector<string> v;
        while(ss>>ch) v.push_back(ch);
        if(mapa.find(v[0]) == mapa.end())
            mapa[v[0]] = 0;
        if(v.size() == 4){
            string auxs = v[2].substr(0, v[2].size()-2);
            if(mapa.find(auxs) == mapa.end())
                mapa[auxs] = 0;
            if(auxs == s || v[0] == s)
                mapa[v[0]] += 5, mapa[auxs] += 5;
        }
        else{
            string auxs = v[3].substr(0, v[3].size()-2);
            if(mapa.find(auxs) == mapa.end())
                mapa[auxs] = 0;
            if(auxs == s || v[0] == s){
                if(v[4] == "wall")
                    mapa[v[0]] += 15, mapa[auxs] += 15;
                else
                    mapa[v[0]] += 10, mapa[auxs] += 10;
            }
        }
    }
    vector<pair<int, string> > conj;
    for(map<string, int>::iterator it = mapa.begin(); it!=mapa.end() ;it++)
        if(it->first != s)
            conj.PB(MP(it->second, it->first));
    sort(conj.begin(), conj.end(), comp);
    for(int i=0; i<conj.size() ;i++)
        cout<<conj[i].second<<endl;
}

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s