Submission #107461

#TimeUsernameProblemLanguageResultExecution timeMemory
107461tictaccatType Printer (IOI08_printer)C++14
0 / 100
29 ms1872 KiB
#include <bits/stdc++.h>

using namespace std;

int N;
vector<string> words;

int lcp(string s1, string s2) {
    int i;
    for (i = 0; i < min(s1.size(),s2.size()); i++) {
        if (s1[i] != s2[i]) break;
    }
    return i;
}

int calc(const vector<string> &words) {

    int ops = words[0].size() + 1;

    for (int i = 1; i < N; i++) {
        ops += (int)words[i].size() + words[i+1].size() - lcp(words[i-1],words[i]) + 1;
    }
    
    ops += words[N-1].size();

    return ops;
}

int main() {

    cin >> N;
    for (int i = 0; i < N; i++) {
        string w; cin >> w;
        words.push_back(w);
    }

    sort(words.begin(),words.end());

    cout << calc(words) << "\n";
//    cout << "sort: " << calc(words) << "\n";

    // int minOps = 1e9;

    // do {
    //     minOps = min(minOps,calc(words));
    // } while (next_permutation(words.begin(),words.end()));

    // cout << "exhaust: " << calc(words) << "\n";

    return 0;
}

Compilation message (stderr)

printer.cpp: In function 'int lcp(std::__cxx11::string, std::__cxx11::string)':
printer.cpp:10:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (i = 0; i < min(s1.size(),s2.size()); i++) {
                 ~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...