Submission #953540

#TimeUsernameProblemLanguageResultExecution timeMemory
953540DarkKnight101Type Printer (IOI08_printer)C++17
100 / 100
100 ms93132 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define endl "\n" #define aint(v) v.begin(),v.end() #define pb push_back #define mp make_pair #define ff first #define ss second #define forl(i,n) for(int i=0;i<n;i++) const ll WMAX = 5e5+5; const ll MOD = 1e9 + 7; ll trie[WMAX][26]; ll node_count; bool stop[WMAX]; /** Adds a new word into the trie. */ void insert_word(string& word) { // Node 0 has 26 children - a through z. ll node = 0; for (char c : word) { // If a node with the current char doesn't exist create one. if (trie[node][c - 'a'] == 0) { trie[node][c - 'a'] = ++node_count; } // Move down the path in the trie. node = trie[node][c - 'a']; } // Mark the ending node so we know it's a dictionary word stop[node] = true; } vector<char>ans; string big; ll mx =0; void fun(ll node,ll depth){ ll curr = big[depth]-'a'; curr++; if(depth>=mx) return; forl(i,26){ if(trie[node][(i+curr)%26]){ ans.pb(97+((i+curr)%26)); if(stop[trie[node][(i+curr)%26]]) { ans.pb('P'); } fun(trie[node][(i+curr)%26],depth+1); ans.pb(45); } } } void solve(){ ll n; cin >> n; string s; mx=0; forl(i,n){ cin >> s; if(s.length()>mx){ big = s; mx= s.length(); } insert_word(s); } fun(0,0); while(ans.back()==45) ans.pop_back(); cout << ans.size() << endl; for(auto i:ans) cout << i << endl; } int main(){ ios::sync_with_stdio(false); cin.tie(0); int tt=1; // cin >> tt; while (tt--){ solve(); } }

Compilation message (stderr)

printer.cpp: In function 'void solve()':
printer.cpp:68:22: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   68 |         if(s.length()>mx){
      |            ~~~~~~~~~~^~~
#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...