Submission #635373

#TimeUsernameProblemLanguageResultExecution timeMemory
635373NeroZeinType Printer (IOI08_printer)C++17
100 / 100
251 ms101260 KiB
#include <bits/stdc++.h> #define FOR(i,a,b) for (int i=a; i<=(b); i++) using namespace std; int n; long long ans; string mx; struct node{ node* ch[26]; int cnt; node(){ for(int i=0;i<26;i++) ch[i] = NULL; cnt = 0; } }; node* root = new node(); void add(string s){ node* cur = root; for(int i=0;i<s.size();i++){ int id = s[i]-'a'; if (cur->ch[id] == NULL) cur->ch[id] = new node(),ans+=2; cur = cur->ch[id]; cur->cnt++; } } set<string>se; void dfs(node* go,int lv=-1,bool keep = 1, string s=""){ int left = -1; if (se.count(s)) cout<<('P')<<'\n'; for(int i=0;i<26;i++){ if(go->ch[i] == NULL)continue; if(mx[lv+1]==(i+'a')&&keep){left=i;continue;} cout<<(char(i+'a'))<<'\n'; dfs(go->ch[i],lv+1,0,s+(char(i+'a'))); cout<<('-')<<'\n'; } if (left!=-1){ cout<<(char('a'+left))<<'\n'; dfs(go->ch[left],lv+1,1,s+(char(left+'a'))); } } signed main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cin>>n; FOR(i,1,n){ string s; cin>>s; se.insert(s); add(s); if((int)mx.size() < (int)s.size()) mx = s; } cout<<ans-(int)mx.size()+n<<'\n'; dfs(root); }

Compilation message (stderr)

printer.cpp: In function 'void add(std::string)':
printer.cpp:22:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 |     for(int i=0;i<s.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...