题意:给定几个串,问如何组合起来使得字典序最小
思路:直接排个序就搞定了
#include <cstdio>
#include <queue>
#include <cstring>
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <map>
#include <string>
#include <set>
#include <ctime>
#include <cmath>
#include <cctype>
using namespace std;
const int maxn = 50000+1000;
#define LL long long
int cas=1,T;
string s[maxn];
bool cmp(string a,string b)
{
string aa = a+b;
string bb = b+a;
return aa<bb;
}
int main()
{
int n;
scanf("%d",&n);
for (int i = 0;i<n;i++)
cin >> s[i];
sort(s,s+n,cmp);
for (int i = 0;i<n;i++)
cout << s[i];
cout << endl;
//freopen("in","r",stdin);
//scanf("%d",&T);
//printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC);
return 0;
}