Submission #1053470

#TimeUsernameProblemLanguageResultExecution timeMemory
1053470MalixType Printer (IOI08_printer)C++14
100 / 100
54 ms5584 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vii; typedef pair<int,int> pi; typedef vector<pi> pii; typedef tuple<int,int,int> tii; typedef vector<ll> li; typedef vector<li> lii; #define REP(i,a,b) for(int i=a;i<b;i++) #define F first #define S second #define PB push_back #define MP make_pair #define LSOne(s) ((s)&(-s)) ll INF=1e18+10; int inf=1e9+10; ll M=1e9+7; string z; bool solve(string x,string y){ int k=min(x.size(),z.size()); int a=0,b=0; REP(i,0,k){ if(x[i]!=z[i])break; a++; } k=min(y.size(),z.size()); REP(i,0,k){ if(y[i]!=z[i])break; b++; } if(a==b)return x<y; if(a>b)return 0; return 1; } int main() { // ios::sync_with_stdio(0); // cin.tie(0); int n;cin>>n; vector<string> a(n); REP(i,0,n)cin>>a[i]; z=a[0]; REP(i,0,n)if(z.size()<a[i].size())z=a[i]; sort(a.begin(),a.end(),solve); string s; vector<char> ans; REP(i,0,n){ if(s.empty()){ for(auto u:a[i]){ ans.PB(u); s.PB(u); } ans.PB('P'); continue; } int mn=-1; int k=min(s.size(),a[i].size()); REP(j,0,k){ if(s[j]!=a[i][j])break; mn=j; } int t=s.size(); REP(j,mn+1,t){ ans.PB('-'); s.pop_back(); } REP(j,mn+1,a[i].size()){ ans.PB(a[i][j]); s.PB(a[i][j]); } ans.PB('P'); } cout<<ans.size()<<"\n"; for(auto u:ans)cout<<u<<"\n"; }

Compilation message (stderr)

printer.cpp: In function 'int main()':
printer.cpp:13:33: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   13 | #define REP(i,a,b) for(int i=a;i<b;i++)
......
   74 |         REP(j,mn+1,a[i].size()){
      |             ~~~~~~~~~~~~~~~~~~   
printer.cpp:74:9: note: in expansion of macro 'REP'
   74 |         REP(j,mn+1,a[i].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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...