답안 #1103914

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1103914 2024-10-22T08:41:16 Z dubabuba Type Printer (IOI08_printer) C++14
60 / 100
1000 ms 98828 KB
#include <bits/stdc++.h>
using namespace std;

template<typename T> void maxer(T &MAX, T CMP) { if(MAX < CMP) MAX = CMP; }
template<typename T> void miner(T &MIN, T CMP) { if(MIN > CMP) MIN = CMP; }
const int mxc = 26;

struct trie {
	trie *chi[mxc];
	int cnt, len;

	trie() {
		for(int i = 0; i < mxc; i++)
			chi[i] = NULL;
		cnt = len = 0;
	}
};

trie *root = new trie();
void insert(string s) {
	trie *cur = root;
	for(char c : s) {
		if(!cur->chi[c - 'a'])
			cur->chi[c - 'a'] = new trie();
		maxer(cur->len, (int)s.size());
		cur = cur->chi[c - 'a'];
	}
	cur->len = s.size();
	cur->cnt++;
}

vector<char> ans;
void solve(trie *cur) {
	while(cur->cnt) {
		ans.push_back('P');
		cur->cnt--;
	}

	for(int i = 0; i < mxc; i++) {
		trie *nxt = cur->chi[i];
		if(nxt == NULL) continue;
		if(nxt->len == cur->len) continue;
		ans.push_back('a' + i);
		solve(nxt);
		ans.push_back('-');
	}

	for(int i = 0; i < mxc; i++) {
		trie *nxt = cur->chi[i];
		if(nxt == NULL) continue;
		if(nxt->len != cur->len) continue;
		ans.push_back('a' + i);
		solve(nxt);
		ans.push_back('-');
	}
}

int main() {
	int n;
	cin >> n;

	string s;
	for(int i = 0; i < n; i++) {
		cin >> s;
		insert(s);
	}

	solve(root);
	while(ans.back() != 'P')
		ans.pop_back();

	cout << ans.size() << endl;
	for(char c : ans)
		cout << c << endl;
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 336 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 22 ms 1872 KB Output is correct
2 Incorrect 28 ms 2376 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 81 ms 5968 KB Output is correct
2 Correct 163 ms 12616 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 198 ms 14792 KB Output is correct
2 Correct 62 ms 3152 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 497 ms 36448 KB Output is correct
2 Execution timed out 1061 ms 83220 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 399 ms 28576 KB Output is correct
2 Execution timed out 1049 ms 98828 KB Time limit exceeded
3 Halted 0 ms 0 KB -