Submission #582389

#TimeUsernameProblemLanguageResultExecution timeMemory
582389mohammad_kilaniType Printer (IOI08_printer)C++17
100 / 100
64 ms59228 KiB
#include <bits/stdc++.h> using namespace std; #define oo 1000000010 #define mod 998244353 const int N = 25000; const int M = N * 20 + 1; int T[M][26] , nodeCnt = 1; pair< int , int > lastCharacter[M]; bool shouldBePrinted[M]; void insert(string &s){ int node = 0; for(int i = 0;i < (int)s.size();i++){ if((int)s.size() > lastCharacter[node].first){ lastCharacter[node] = make_pair((int)s.size() , s[i] - 'a'); } if(T[node][s[i] - 'a'] == -1){ lastCharacter[nodeCnt] = make_pair(-oo , -1); T[node][s[i] - 'a'] = nodeCnt++; } node = T[node][s[i] - 'a']; } shouldBePrinted[node] = true; } string ans; void DFS(int node,bool erja3){ if(shouldBePrinted[node]){ ans += 'P'; ans += '\n'; } for(int i = 0;i < 26;i++){ if(T[node][i] != -1 && i != lastCharacter[node].second){ ans += (char)(i + 'a'); ans += '\n'; DFS(T[node][i] , true); ans += '-'; ans += '\n'; } } if(lastCharacter[node].second != -1){ ans += (lastCharacter[node].second + 'a'); ans += '\n'; DFS(T[node][lastCharacter[node].second] , erja3); if(erja3){ ans += '-'; ans += '\n'; } } } int main(){ memset(T,-1,sizeof(T)); lastCharacter[0] = make_pair(-oo , -1); int n; scanf("%d",&n); char tmpRead[21]; string s; for(int i = 0 ;i < n;i++){ scanf("%s",tmpRead); s = (string)tmpRead; insert(s); } DFS(0 , false); cout << (int)ans.size() / 2 << endl; printf("%s",ans.c_str()); return 0; }

Compilation message (stderr)

printer.cpp: In function 'int main()':
printer.cpp:67:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   67 |  scanf("%d",&n);
      |  ~~~~~^~~~~~~~~
printer.cpp:71:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   71 |   scanf("%s",tmpRead);
      |   ~~~~~^~~~~~~~~~~~~~
#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...