제출 #1312180

#제출 시각아이디문제언어결과실행 시간메모리
1312180mudanvitType Printer (IOI08_printer)C++20
100 / 100
21 ms10908 KiB
// Source: https://usaco.guide/general/io #include <bits/stdc++.h> using namespace std; int sim(const string& a,const string& b){ int k=0; for (int j=0; j<min(a.size(), b.size()); j++){ if (a[j]!=b[j]){break;}k++; } return k; } int main() { int N; cin>>N; std::vector<std::string> inp(N); for (int i=0; i<N; i++){cin>>inp[i];} int maxLen = 0; string let = ""; for (auto x: inp){if (x.size()>maxLen){maxLen=x.size(); let = x;}} sort(inp.begin(), inp.end(), [&](const string &a, const string &b) { int simA = sim(a, let); int simB = sim(b, let); if (simA != simB) return simA < simB; return a < b; }); std::string ans = ""; int ansn = 0; for (auto x: inp[0]){ans += x; ans+="\n"; ansn++;} ans += "P\n"; ansn++; for (int i=1; i<N; i++){ int k=0; for (int j=0; j<min(inp[i].size(), inp[i-1].size()); j++){ if (inp[i][j]!=inp[i-1][j]){break;} k+=1; } for (int j=0; j<inp[i-1].size()-k; j++){ans += "-\n"; ansn++;} for (int j=k; j<inp[i].size(); j++){ ans += inp[i][j]; ansn++;ans+="\n"; } ans+="P\n"; ansn++; } cout<<ansn<<endl; cout<<ans; }
#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...