#include<bits/stdc++.h>
//SHORTEST CODE:::::
#define ll long long
#define ull unsigned long long
#define vi vector<int>
#define vll vector<long long>
#define PB push_back
#define snd second
#define fst first
#define ii pair<int, int>
#define MP make_pair
#define forn(i,n) for(int i=0;i<n;++i)
#define forsn(i,s,n) for(int i=s; i<n; ++i)
#define SIZE(c) int((c).size())
#define all(x) x.begin(), x.end()
#define endl '\n'
#define yes cout<<"Yes\n"
#define no cout<<"No\n"
#define imp(x) {for(auto __:x)cout<<__<<" "; cout<<"\n";}
//DEBUG:::::
#define DBG(x) cerr << #x << " = " << (x) << endl
#define RAYA cerr << "===============================" << endl
using namespace std;
inline void FIO() {ios_base::sync_with_stdio(false); cin.tie(NULL);}
int dx[4]={0, 0, 1, -1};
int dy[4]={1, -1, 0, 0};
/*Cosas a tener en cuenta:
-Mantenlo Simple
-Leer TODO el enunciado*/
const int mxn=1e5*2+10, M=1e9+7;
/*ll fact[mxn];
ll pw(ll a, ll b){
if(b==0)return 1;
if(b%2==0)return pw(a*a%M,b/2)%M;
else return (a*pw(a*a%M,b/2))%M;
}
ll C(ll n, ll k){
if(n<k)return 0LL;
return (fact[n]*pw((fact[k]*fact[n-k])%M, M-2))%M;
}*/
int main(){FIO();
int n;cin>>n;
vector<string> v(n);
vi ind(n);
forn(i,n){
ind[i]=i;
cin>>v[i];
}
int maxres=1e9;
vector<char> ret;
do{
vector<char> cur;
string s=v[ind[0]];
//Leo el primer string
forn(i,SIZE(s))cur.PB(s[i]);
//Construyo la respuesta para el orden
forsn(i,1,n){
cur.PB('P');
int j=0;
//Maximo prefijo
while(j<min(SIZE(s), SIZE(v[ind[i]])) and s[j]==v[ind[i]][j]){
j++;
}
//Sacamos el ultimo elemento
int SZ=SIZE(s);
forsn(_,j,SZ){
s.pop_back();
cur.PB('-');
}
//Ingresamos la siguiente palabra
forsn(_,j,SIZE(v[ind[i]])){
s.PB(v[ind[i]][_]);
cur.PB(v[ind[i]][_]);
}
}
cur.PB('P');
if(SIZE(cur)<maxres){
ret=cur;
maxres=SIZE(cur);
}
}while(next_permutation(all(ind)));
cout<<maxres<<endl;
forn(i,SIZE(ret))cout<<ret[i]<<endl;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
33 ms |
348 KB |
Output is correct |
2 |
Correct |
303 ms |
344 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
1033 ms |
344 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
1055 ms |
348 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
1036 ms |
344 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
1062 ms |
348 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
1064 ms |
604 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
1027 ms |
1752 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
1053 ms |
2876 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
1096 ms |
2820 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |