现有a、b两种药材,a的价值为99973,b的价值为9999,当神农把a药材和b药材按照一定顺序放入药炉时,先放a再放b得到药的价值为999739999,而先放b再放a的价值为999999973.
神农要想100%的解掉这位病人的毒,只能让自己的药材制成的解药的价值最大,现在他请你来帮他解决这个问题
输入描述
第一行一个数n(1<=n<=1000000)
接下来n行每行一串数字s[i]( |s[i]|<=10000 )
输出描述
解药的最大价值
样例输入
2 99973 9999
样例输出
999999973
这道题其实很简单就是想法特别重要。;
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<set>
#include<map>
#include<queue>
#define pi acos(-1)
using namespace std;
typedef long long ll;
const int maxn=1e7+10;
const int INF=0x3f3f3f3f;
const double EPS = 1e-10;
bool cmp(string s1, string s2) {
return s1 + s2 > s2 + s1;
}
int n;
int main() {
cin >> n;
vector<string>v;
for(int i = 0; i < n; ++i) {
string s; cin >>s; v.push_back(s);
}
sort(v.begin(),v.end(),cmp);
for(int i=0; i<n; i++)cout << v[i];
cout << endl;
return 0;
}