Submission #924979

#TimeUsernameProblemLanguageResultExecution timeMemory
924979emad234Type Printer (IOI08_printer)C++17
100 / 100
148 ms58060 KiB
#include <bits/stdc++.h> #define ll long long #define F first #define S second #define pii pair<int,int> const int mod = 1e9 + 7; const int mxN = 6e6 + 5; using namespace std; int trie[mxN][26]; int nodeCnt; char cnt[mxN]; int num[mxN]; int p[mxN]; string chk; int ed; int mx; void insert(int u = 0){ for(int i = 0;i <chk.size();i++){ if(!trie[u][chk[i] - 'a']) trie[u][chk[i] - 'a'] = ++nodeCnt; u = trie[u][chk[i] - 'a']; cnt[u] = chk[i]; } num[u]++; } void calcD(int u = 0,int dep = 0){ if(dep > mx){ ed = u; mx = dep; } // cout<<u<<' '; for(int i = 0;i < 26;i++){ if(trie[u][i]) { p[trie[u][i]] = u; calcD(trie[u][i],dep + 1); } } } set<int>path; vector<char>ans; void query(int u = 0){ queue<int> q; int lst = -1; for(int i = 0;i < 26;i++){ if(trie[u][i]){ if(path.find(trie[u][i]) != path.end()) lst = trie[u][i]; else q.push(trie[u][i]); } } while(num[u]--){ ans.push_back('P'); } if(lst != -1) q.push(lst); while(q.size()){ ans.push_back(cnt[q.front()]); query(q.front()); ans.push_back('-'); q.pop(); } } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >>n; for(int i = 0;i < n;i++){ cin >>chk; insert(); } calcD(); while(ed){ path.insert(ed); ed = p[ed]; } query(); // cout<<"TEST\n"; while(ans.back() == '-') ans.pop_back(); cout<<ans.size()<<'\n'; for(auto x : ans){ cout<<x<<'\n'; } }

Compilation message (stderr)

printer.cpp: In function 'void insert(int)':
printer.cpp:18:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |   for(int i = 0;i <chk.size();i++){
      |                 ~~^~~~~~~~~~~
#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...