# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
416000 | fvogel499 | Type Printer (IOI08_printer) | C++14 | 158 ms | 134096 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
/*
File created on 06/01/2021 at 20:53:10.
Link to problem: https://oj.uz/problem/view/IOI08_printer
Description: use a trie structures
Time complexity: O(N)
Space complexity: O(N)
Status: DEV
Copyright: Ⓒ 2021 Francois Vogel
*/
#include <iostream>
#include <cmath>
#include <vector>
#include <bitset>
#include <queue>
#include <cstring>
#include <set>
#include <unordered_set>
#include <map>
#include <unordered_map>
#include <algorithm>
using namespace std;
#define pii pair<int, int>
#define f first
// #define s second
#define pb push_back
#define ins insert
#define cls clear
#define ll long long
string steps;
int proc;
struct Node {
Node(char lt, int ld) {
t = lt;
d = ld;
md = d;
mn = nullptr;
words = 0;
for (int i = 0; i < 26; i++) exist[i] = nullptr;
}
void add(string& s, int k) {
if (k == s.size()) {
words++;
return;
}
int i = s[k]-'a';
if (exist[i] == nullptr) {
exist[i] = new Node(char(i)+'a', d+1);
c.pb(exist[i]);
}
exist[i]->add(s, k+1);
if (exist[i]->md > md) {
md = exist[i]->md;
mn = exist[i];
}
}
int words, d, md;
char t;
Node* exist [26];
vector<Node*> c;
Node* mn;
};
void dfs(Node* i) {
for (int j = 0; j < i->words; j++) {
steps += "P\n";
proc--;
}
for (Node* j : i->c) {
if (j != i->mn) {
steps += j->t;
steps += "\n";
dfs(j);
steps += "-\n";
}
}
if (i->mn == nullptr) return;
steps += i->mn->t;
steps += '\n';
dfs(i->mn);
if (proc != 0) {
steps += "-\n";
}
}
signed main() {
cin.tie(0);
ios_base::sync_with_stdio(0);
Node* root = new Node('$', 0);
int n;
cin >> n;
string ls;
for (int i = 0; i < n; i++) {
cin >> ls;
root->add(ls, 0);
}
proc = n;
dfs(root);
cout << steps.size()/2 << endl;
cout << steps;
int d = 0;
d++;
}
컴파일 시 표준 에러 (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... |