Advertisement
Guest User

Untitled

a guest
Aug 15th, 2013
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.58 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <math.h>
  4. #include <stdlib.h>
  5. #include <stack>
  6. #include <queue>
  7. #include <set>
  8. #include <map>
  9. #include <string>
  10. #include <algorithm>
  11. #include <iostream>
  12. using namespace std;
  13.  
  14. class BI {
  15.     vector<int> a; 
  16. public:
  17.     BI() {}
  18.     void init(char *s) {
  19.         int l = strlen(s);
  20.         for (int i = l - 1; i >= 0; i--)
  21.             a.push_back(s[i] - '0');
  22.     }
  23.     string toString() {
  24.         string r = "";
  25.         for (int i = a.size() - 1; i >= 0; i--)
  26.             r.push_back('0' + a[i]);
  27.         return r;
  28.     }
  29.     bool operator < (const BI &x) const {
  30.         if (a.size() != x.a.size())
  31.             return a.size() < x.a.size();
  32.         for (int i = a.size() - 1; i >= 0; i--)
  33.             if (a[i] != x.a[i])
  34.                 return a[i] < x.a[i];
  35.         return 0;
  36.     }
  37.     BI operator + (const BI &x) const {
  38.         BI r;
  39.         int s = 0, o = 0;
  40.         for (int i = 0; i < max(a.size(), x.a.size()); i++) {
  41.             s = o;
  42.             if (i < a.size())
  43.                 s += a[i];
  44.             if (i < x.a.size())
  45.                 s += x.a[i];
  46.             o = s / 10;
  47.             r.a.push_back(s % 10);
  48.         }
  49.         if (o)
  50.             r.a.push_back(o);
  51.         return r;
  52.     }
  53. } bi[1010];
  54.  
  55. int n;
  56. char s[510];
  57.  
  58. int main() {
  59.     freopen("input.txt", "r", stdin);
  60.     freopen("output.txt", "w", stdout);
  61.     scanf("%d\n", &n);
  62.     for (int i = 0; i < n; i++) {
  63.         scanf("%s\n", s);
  64.         bi[i].init(s);
  65.     }
  66.     sort(&bi[0], &bi[n]);
  67.     for (int i = 2; i < n; i++) {
  68.         if ((bi[i - 2] < bi[i - 1] + bi[i]) &&
  69.             (bi[i - 1] < bi[i - 2] + bi[i]) &&
  70.             (bi[i] < bi[i - 2] + bi[i - 1])) {
  71.                 printf("%s %s %s", bi[i - 2].toString().c_str(), bi[i - 1].toString().c_str(), bi[i].toString().c_str());
  72.                 return 0;
  73.         }
  74.     }
  75.     printf("0 0 0");
  76.     return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement