Advertisement
Guest User

Untitled

a guest
Mar 1st, 2016
3,632
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.05 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define forn(i, n) for (int i = 0; i < int(n); i++)
  4. #define nfor(i, n) for (int i = int(n) - 1; i >= 0; i--)
  5. #define fore(i, l, r) for (int i = int(l); i < int(r); i++)
  6. #define correct(x, y, n, m) (0 <= (x) && (x) < (n) && 0 <= (y) && (y) < (m))
  7. #define all(a) (a).begin(), (a).end()
  8. #define sz(a) int((a).size())
  9. #define pb(a) push_back(a)
  10. #define mp(x, y) make_pair((x), (y))
  11. #define x first
  12. #define y second
  13.  
  14. using namespace std;
  15.  
  16. typedef long long li;
  17. typedef long double ld;
  18. typedef pair<int, int> pt;
  19.  
  20. template<typename X> inline X abs(const X& a) { return a < 0? -a: a; }
  21. template<typename X> inline X sqr(const X& a) { return a * a; }
  22.  
  23. template<typename A, typename B> inline ostream& operator<< (ostream& out, const pair<A, B>& p) { return out << "(" << p.x << ", " << p.y << ")"; }
  24. template<typename T> inline ostream& operator<< (ostream& out, const vector<T>& a) { out << "["; forn(i, sz(a)) { if (i) out << ','; out << ' ' << a[i]; } return out << " ]"; }
  25. template<typename T> inline ostream& operator<< (ostream& out, const set<T>& a) { return out << vector<T>(all(a)); }
  26.  
  27. inline ld gett() { return clock() / ld(CLOCKS_PER_SEC); }
  28.  
  29. const int INF = int(1e9);
  30. const li INF64 = li(1e18);
  31. const ld EPS = 1e-9, PI = 3.1415926535897932384626433832795;
  32.  
  33. const int N = 500500, L = 111;
  34.  
  35. int n;
  36. string a[N];
  37.  
  38. bool read() {
  39.     if (!(cin >> n)) return false;
  40.     forn(i, n) {
  41.         static char buf[L];
  42.         assert(scanf("%s", buf) == 1);
  43.         a[i] = string(buf);
  44.     }
  45.     return true;
  46. }
  47.  
  48. inline bool cmp(const string& a, const string& b) {
  49.     return a + b < b + a;
  50. }
  51.  
  52. void solve() {
  53.     sort(a, a + n, cmp);
  54.     string ans = accumulate(a, a + n, string());
  55.     puts(ans.c_str());
  56. }
  57.  
  58. int main() {
  59. #ifdef SU1
  60.     assert(freopen("input.txt", "rt", stdin));
  61.     //assert(freopen("output.txt", "wt", stdout));
  62. #endif
  63.    
  64.     cout << setprecision(10) << fixed;
  65.     cerr << setprecision(5) << fixed;
  66.  
  67.     while (read()) {
  68.         ld stime = gett();
  69.         solve();
  70.         cerr << "Time: " << gett() - stime << endl;
  71.         //break;
  72.     }
  73.    
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement