답안 #716639

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
716639 2023-03-30T15:57:37 Z europium Type Printer (IOI08_printer) C++17
0 / 100
29 ms 3284 KB
// - 28/3/23
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <numeric>
#include <cmath>
#include <iterator>
#include <set>
#include <map>
#include <math.h>
#include <iomanip>
#include <unordered_set>
#include <queue>
#include <climits>
using namespace std;
// clang++ -std=c++17 IOI08_Printer.cpp && ./a.out

using ll = long long;

bool comp(const string &a, const string&b){
    if (a.size() == b.size()) return a < b;
    return a.size() < b.size();
}

void solve(){
    int n;
    cin >> n;

    vector<string> a(n);
    for (string& e : a) cin >> e;

    int max_len = 0;
    char end_ltr;

    for (auto e : a){
        if (e.size() > max_len){
            max_len = e.size();
            end_ltr = e[0];
        }
    }

    vector<string> first, last;

    for (auto e : a){
        if (e[0] == end_ltr) last.push_back(e);
        else first.push_back(e);
    }

    sort(first.begin(), first.end());
    sort(last.begin(), last.end(), comp);

    a.clear();

    for (auto e : first) a.push_back(e);
    for (auto e : last) a.push_back(e);

    for (auto e : last) cout << e << ' ';
    cout << '\n';

    vector<char> ans;

    string s = "";

    for (auto e : a){
        // removing characters
        int min_size = min((int)s.size(), (int)e.size());
        int stop;
        (s.size() == 0 || e.size() == 0) ? stop = 0 : stop = min_size;

        // stop is length of same prefix
        for (int i = 0; i < min_size; i++){
            if (s[i] != e[i]){
                stop = i;
                break;
            }
        }

        // cout << s << ' ' << e << '\n';
        // cout << stop << '\n';

        for (int i = 0; i < s.size() - stop; i++) ans.push_back('-');
        s = s.substr(0, stop);

        // adding characters
        while (s != e){
            ans.push_back(e[s.size()]);
            s += e[s.size()];
        }
        ans.push_back('P');
    }

    cout << ans.size() << '\n';

    for (auto e : ans) cout << e << '\n';
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);

    // freopen("input.txt", "r", stdin);
    solve();

    return 0;
}

Compilation message

printer.cpp: In function 'void solve()':
printer.cpp:37:22: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   37 |         if (e.size() > max_len){
      |             ~~~~~~~~~^~~~~~~~~
printer.cpp:82:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   82 |         for (int i = 0; i < s.size() - stop; i++) ans.push_back('-');
      |                         ~~^~~~~~~~~~~~~~~~~
printer.cpp:46:9: warning: 'end_ltr' may be used uninitialized in this function [-Wmaybe-uninitialized]
   46 |         if (e[0] == end_ltr) last.push_back(e);
      |         ^~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Expected integer, but "tptttykduyvxjbzhqup" found
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Expected integer, but "labfaryosskugbkiuffd" found
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Expected integer, but "pw" found
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Expected integer, but "idv" found
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Expected integer, but "h" found
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 340 KB Expected integer, but "d" found
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 724 KB Expected integer, but "m" found
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 13 ms 1508 KB Expected integer, but "u" found
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 29 ms 3240 KB Expected integer, but "l" found
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 26 ms 3284 KB Expected integer, but "e" found
2 Halted 0 ms 0 KB -