| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 525591 | AngusWong | Type Printer (IOI08_printer) | C++17 | 221 ms | 72328 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define f first
#define s second
using namespace std;
int n;
string s[25001];
vector<pair<pair<char, int>, vector<int> > > trie;
vector<int> l, mx;
string ans;
void insert(string s, int p=0, int t=0){
if (p==s.length()){
trie[t].f.s=1;
return;
}
if (!trie[t].s[s[p]-'a']){
trie.push_back({{s[p], 0}, vector<int>(26, 0)});
trie[t].s[s[p]-'a']=trie.size()-1;
}
insert(s, p+1, trie[t].s[s[p]-'a']);
}
void dfs(int x, int len=0){
l[x]=len;
for (int i=0; i<26; i++){
if (!trie[x].s[i]) continue;
dfs(trie[x].s[i], len+1);
if (l[trie[x].s[i]]>=l[x]){
l[x]=l[trie[x].s[i]], mx[x]=i;
}
}
}
void dfs2(int x){
if (trie[x].f.f!='!') ans+=trie[x].f.f;
if (trie[x].f.s) ans+='P';
for (int i=0; i<26; i++){
if (!trie[x].s[i]) continue;
if (i!=mx[x]) dfs2(trie[x].s[i]);
}
if (mx[x]!=-1) dfs2(trie[x].s[mx[x]]);
ans+='-';
}
int main() {
trie.push_back({{'!', 0}, vector<int>(26, 0)});
cin >> n;
for (int i=1; i<=n; i++){
cin >> s[i];
insert(s[i]);
}
l=mx=vector<int>(trie.size(), -1);
dfs(0);
dfs2(0);
while (ans.back()=='-') ans.pop_back();
cout << ans.length() << "\n";
for (char c: ans) cout << c << "\n";
vector<string> v;
string now;
for (char c: ans){
assert(c=='-' || c=='P' || (c>='a' && c<='z'));
if (c=='-') now.pop_back();
else if (c=='P') v.push_back(now);
else now+=c;
}
assert(v.size()==n);
sort(v.begin(), v.end());
sort(s+1, s+n+1);
for (int i=1; i<=n; i++) assert(v[i-1]==s[i]);
}컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
