답안 #1011897

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1011897 2024-07-01T10:48:14 Z kaopj Type Printer (IOI08_printer) C++17
100 / 100
72 ms 4688 KB
#include <iostream>
#include <vector>
#include <algorithm>
#define lgm cin.tie(0)->sync_with_stdio(0);
#define ll long long
using namespace std;
string maxi="";
int pref(string s1, string s2) {
    int i;
    for(i=0; i<min(s1.size(), s2.size()); i++) {
        if(s1[i] != s2[i]) return i;
    }
    return i;
}
static bool cmp(string&a,string&b) {
    int x=pref(a,maxi);
    int y=pref(b,maxi);
    if (a == maxi) {
        return false;
    }
    if (b == maxi) {
        return true;
    }
    if (x != y) {
        return x<y;
    }
    return a < b;
}
int main() {
    ll n;
    cin >> n;
    vector<string> p(n+1);
    for (int i=1;i<=n;i++) {
        cin >> p[i];
        if (p[i].size() > maxi.size()) {
            maxi = p[i];
        }
    }
    sort(p.begin()+1,p.end(),cmp);
    int pr,mx=0;
    for(int i=1; i<=n; i++) {
        pr = pref(p[i-1], p[i]);
        mx += p[i-1].size() + p[i].size() - 2*pr;
    }
    cout << mx+n << '\n';
    for(int i=1; i<=n; i++) {
        pr = pref(p[i-1], p[i]);
        for(int j=p[i-1].size(); j>pr; j--) {
            cout << "-\n";
        }
        for(int j=pr; j<p[i].size(); j++) {
            cout << p[i][j] << '\n';
        }
        cout << "P\n";
    }
    return 0;
}

Compilation message

printer.cpp: In function 'int pref(std::string, std::string)':
printer.cpp:10:15: warning: comparison of integer expressions of different signedness: 'int' and 'const long unsigned int' [-Wsign-compare]
   10 |     for(i=0; i<min(s1.size(), s2.size()); i++) {
      |              ~^~~~~~~~~~~~~~~~~~~~~~~~~~
printer.cpp: In function 'int main()':
printer.cpp:51:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |         for(int j=pr; j<p[i].size(); j++) {
      |                       ~^~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 436 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 348 KB Output is correct
2 Correct 2 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 604 KB Output is correct
2 Correct 12 ms 860 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 15 ms 1116 KB Output is correct
2 Correct 18 ms 1116 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 39 ms 1876 KB Output is correct
2 Correct 66 ms 3924 KB Output is correct
3 Correct 53 ms 3324 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 32 ms 1872 KB Output is correct
2 Correct 72 ms 4688 KB Output is correct
3 Correct 62 ms 3628 KB Output is correct
4 Correct 66 ms 4424 KB Output is correct