Submission #1011699

#TimeUsernameProblemLanguageResultExecution timeMemory
1011699vjudge1Vlak (COCI20_vlak)C++98
70 / 70
17 ms11608 KiB
#include <iostream> #include <map> using namespace std; struct node { map<char, node*> ch; bool is_prefix[3]; bool win[3]; void add(string &x, int player, int i=0) { is_prefix[player]=true; if(i>=x.size()) return; char c = x[i]; if(ch.find(c)==ch.end()) ch[c]=new node(); ch[c]->add(x, player, i+1); } void run_dp() { //run dp on the children bool lose[3]={}; for(auto X:ch) { X.second->run_dp(); if(!X.second->win[1]) lose[1]=true; if(!X.second->win[2]) lose[2]=true; } win[1]=is_prefix[1] and lose[2]; win[2]=is_prefix[2] and lose[1]; } }; node *root; int main() { root = new node(); int n; cin>>n; while(n--) { string x; cin>>x; root->add(x, 1); } cin>>n; while(n--) { string x; cin>>x; root->add(x, 2); } root->run_dp(); if(root->win[1]) cout<<"Nina"<<endl; else cout<<"Emilija"<<endl; return 0; }

Compilation message (stderr)

Main.cpp: In member function 'void node::add(std::string&, int, int)':
Main.cpp:14:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   14 |     if(i>=x.size())
      |        ~^~~~~~~~~~
#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...