Submission #1184283

#TimeUsernameProblemLanguageResultExecution timeMemory
1184283rexdinoType Printer (IOI08_printer)C++20
100 / 100
231 ms69772 KiB
#include<bits/stdc++.h> #define fi first #define se second #define pb push_back #define sz(s) (int)s.size() #define FOR(i,a,b) for(int i=a;i<=b;++i) #define REP(i,a,b) for(int i=a;i>=b;--i) using namespace std; using ll = long long; using pii = pair<int, int>; const int N = 5e5 + 5; const int mod = 1e9 + 7; const int base = 31; const ll INF = 1e18; /// CODE /// int n; string s[N]; vector<char> V; int dem = 0; void print(){ cout << V.size() << "\n"; for (char c : V) cout << c << "\n"; exit(0); } int cnt = 0; int node[N][27]; int fin[N], h[N]; void Add(string s){ int id = 0; FOR(i, 0, s.size()-1){ int k = s[i] - 'a'; if (node[id][k] == 0) node[id][k] = ++cnt; id = node[id][k]; } h[id] = 0; fin[id]++; } void dfs(int id){ if (fin[id]){ V.pb('P'); if (++dem == n) print(); } FOR(i, 0, 20){ FOR(j, 0, 25){ if (node[id][j] != 0 && h[node[id][j]] == i){ char c = j + 'a'; V.pb(c); dfs(node[id][j]); } } } V.pb('-'); } void input(){ cin >> n; FOR(i, 1, n){ cin >> s[i]; Add(s[i]); } REP(id, cnt, 0){ FOR(j, 0, 25){ if (node[id][j] != 0){ h[id] = max(h[id], h[node[id][j]] + 1); } } } dfs(0); } signed main(){ #define NAME "main" if (fopen(NAME".inp", "r")){ freopen(NAME".inp", "r", stdin); freopen(NAME".out", "w", stdout); } ios_base::sync_with_stdio(false); cin.tie(nullptr); input(); return 0; }

Compilation message (stderr)

printer.cpp: In function 'int main()':
printer.cpp:87:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   87 |         freopen(NAME".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
printer.cpp:88:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   88 |         freopen(NAME".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#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...