Submission #141638

#TimeUsernameProblemLanguageResultExecution timeMemory
141638RaresRoscaLozinke (COCI17_lozinke)C++14
100 / 100
270 ms2424 KiB
#include <iostream>
#include <string>
#include <algorithm>
#include <map>
#include <set>
using namespace std;
int l=1,n,i,j,k,sol;
string ch[20010],c;
set <string> s;
map <string, int> m;
int cmp(string a, string b){
    if(a.size()!=b.size())
        return a.size()<b.size();
    else
        return a<b;
}
int main(){
    cin>>n;
    for(i=1;i<=n;i++)
        cin>>ch[i];
    sort(ch+1,ch+n+1,cmp);
    for(i=1;i<=n;i++){
        s.clear();
        for(j=0;j<ch[i].size();j++){
            c.erase(c.begin(),c.end());
            for(k=j;k<ch[i].size();k++){
                c.push_back(ch[i][k]);
                s.insert(c);
            }
        }
        for(set <string>:: iterator it=s.begin();it!=s.end();it++)
            if(m.find(*it)!=m.end())
                sol+=m[*it];
        if(m.find(ch[i])!=m.end())
            m[ch[i]]++;
        else
            m[ch[i]]=1;

    }
    for(i=2;i<=n;i++){
        if(ch[i]==ch[i-1])
            l++;
        else
            l=1;
        sol+=l-1;
    }
    cout<<sol;
    return 0;
}

Compilation message (stderr)

lozinke.cpp: In function 'int main()':
lozinke.cpp:24:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(j=0;j<ch[i].size();j++){
                 ~^~~~~~~~~~~~~
lozinke.cpp:26:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for(k=j;k<ch[i].size();k++){
                     ~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...