Submission #953531

#TimeUsernameProblemLanguageResultExecution timeMemory
953531DarkKnight101Type Printer (IOI08_printer)C++17
10 / 100
870 ms97532 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<vector<char> > ans(26); void fun(ll node,ll curr){ forl(i,26){ if(trie[node][(i+curr)%26]){ ans[curr].pb(97+(i+curr)%26); if(stop[trie[node][(i+curr)%26]]) { ans[curr].pb('P'); } fun(trie[node][(i+curr)%26],curr); ans[curr].pb(45); } } } void solve(){ ll n; cin >> n; string s; forl(i,n){ cin >> s; insert_word(s); } forl(i,26){ fun(0,i); while(ans[i].back()=='-') ans[i].pop_back(); } ll mn = LLONG_MAX, ind = 0; forl(i,26){ if(ans[i].size()<mn){ mn = ans[i].size(); ind = i; } } cout << mn << endl; for(auto i:ans[ind]) 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:67:25: warning: comparison of integer expressions of different signedness: 'std::vector<char>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   67 |         if(ans[i].size()<mn){
      |            ~~~~~~~~~~~~~^~~
#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...