Submission #476913

#TimeUsernameProblemLanguageResultExecution timeMemory
476913robellType Printer (IOI08_printer)C++14
0 / 100
1090 ms17464 KiB
#pragma GCC optimize("O2") #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace std; using namespace __gnu_pbds; typedef tree<int,null_type,less<int>,rb_tree_tag, tree_order_statistics_node_update> indexed_set; typedef long long ll; #define pb push_back #define eb emplace_back #define countbits __builtin_popcount #define beg0 __builtin_clz #define terminal0 __builtin_ctz #define mod 1e9+7 void setIO(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); } void setIO(string f){ freopen((f+".in").c_str(),"r",stdin); freopen((f+".out").c_str(),"w",stdout); setIO(); } int N; map<string,vector<string>> e; map<string,bool> m; string w[(int)25e2]; int edges = 0; vector<char> ops; void dfs(string s){ edges++; if (!m[s]){ ops.pb(s[0]); for (string c:e[s]){ dfs(c); } ops.pb('-'); }else{ ops.pb(s[0]); for (string c:e[s]){ if (!m[c]){ dfs(c); } } for (string c:e[s]){ if (m[c]){ dfs(c); } } } } int main(){ setIO(); cin >> N; int maxl = 0,pos=-1, bp = -1; for (int i=0;i<N;i++){ cin >> w[i]; if (w[i].length()>maxl){maxl=w[i].length();pos=i;bp=w[i][0]-'a';} } for (int i=0;i<N;i++){ for (int j=0;j<w[i].size()-1;j++){ e[w[i].substr(j,1)+to_string(j)].pb(w[i].substr(j+1,1)+to_string(j+1)); if (i==pos){ m[w[i].substr(j,1)+to_string(j)]=true; m[w[i].substr(j+1,1)+to_string(j+1)]=true; } } } string alpha = "abcdefghijklmnopqrstuvwxyz"; swap(alpha[bp],alpha[25]); for (int i=0;i<alpha.size();i++){ if (e[alpha.substr(i,1)+"0"].size()==0) continue; dfs(alpha.substr(i,1)+"0"); } edges*=2; edges-=maxl; cout << ++edges<< "\n"; for (char c:ops){ cout << c << "\n"; } }

Compilation message (stderr)

printer.cpp: In function 'int main()':
printer.cpp:57:20: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   57 |   if (w[i].length()>maxl){maxl=w[i].length();pos=i;bp=w[i][0]-'a';}
      |       ~~~~~~~~~~~~~^~~~~
printer.cpp:60:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   60 |   for (int j=0;j<w[i].size()-1;j++){
      |                ~^~~~~~~~~~~~~~
printer.cpp:70:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   70 |  for (int i=0;i<alpha.size();i++){
      |               ~^~~~~~~~~~~~~
printer.cpp: In function 'void setIO(std::string)':
printer.cpp:19:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |  freopen((f+".in").c_str(),"r",stdin);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
printer.cpp:20:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |  freopen((f+".out").c_str(),"w",stdout);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...