Guest User

Untitled

a guest
Jun 20th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.05 KB | None | 0 0
  1. #include <vector>
  2. #include <list>
  3. #include <map>
  4. #include <set>
  5. #include <deque>
  6. #include <queue>
  7. #include <stack>
  8. #include <bitset>
  9. #include <algorithm>
  10. #include <functional>
  11. #include <numeric>
  12. #include <utility>
  13. #include <sstream>
  14. #include <iostream>
  15. #include <iomanip>
  16. #include <cstdio>
  17. #include <cmath>
  18. #include <cstdlib>
  19. #include <ctime>
  20.  
  21. using namespace std;
  22.  
  23. #define X first
  24. #define Y second
  25. #define pb push_back
  26. #define mp make_pair
  27. #define ppb pop_back
  28. #define sz(x) ((int)(x).size())
  29. #define all(x) (x).begin(), (x).end()
  30.  
  31. typedef long long ll;
  32. typedef pair<int, int> pii;
  33. typedef vector<int> vi;
  34. typedef vector<ll> vl;
  35. typedef vector<bool> vb;
  36. typedef vector<pii> vii;
  37. typedef vector<vi> vvi;
  38. typedef vector<vb> vvb;
  39.  
  40. class DengklekMakingChains
  41. {
  42. public:
  43.     int maxBeauty(vector <string>);
  44. };
  45.  
  46. bool check(string &s)
  47. {
  48.     for (int i = 0; i < sz(s); i++)
  49.         if (s[i] == '.') return 0;
  50.     return 1;
  51. }
  52.  
  53. bool checkstart(string &s)
  54. {
  55.     if (s[0] == '.' && s[sz(s)-1] != '.') return 1;
  56.     return 0;
  57. }
  58.  
  59. bool checkend(string &s)
  60. {
  61.     if (s[0] != '.' && s[sz(s)-1] == '.') return 1;
  62.     return 0;
  63. }
  64.  
  65. bool checkstartend(string &s)
  66. {
  67.     if (s[0] == '.' && s[sz(s)-1] == '.') return 1;
  68.     return 0;
  69. }
  70.  
  71. int DengklekMakingChains::maxBeauty(vector <string> chains)
  72. {
  73.     vector<string> s, start, end, startend;
  74.     for (int i = 0; i < sz(chains); i++)
  75.         if (check(chains[i]))
  76.         {
  77.             s.pb(chains[i]);
  78.         } else if (checkstartend(chains[i]))
  79.         {
  80.             startend.pb(chains[i]);
  81.         } else if (checkstart(chains[i]))
  82.         {
  83.             start.pb(chains[i]);
  84.         } else if (checkend(chains[i]))
  85.         {
  86.             end.pb(chains[i]);
  87.         }
  88.        
  89.     int ans = 0;
  90.     if (sz(s) > 0)
  91.     {
  92.         int sum = 0;
  93.         for (int i = 0; i < sz(s); i++)
  94.             for (int j = 0; j < sz(s[i]); j++)
  95.                 sum += (int)(s[i][j]-'0');
  96.         int sumstart = 0;
  97.         for (int i = 0; i < sz(start); i++)
  98.         {
  99.             int tmp = 0;
  100.             for (int j = 0; i < sz(start[i]); j++)
  101.                 if (start[i][j] != '.') tmp += (int)(start[i][j]-'0');
  102.             sumstart = max(sumstart, tmp);
  103.         }
  104.         int sumend = 0;
  105.         for (int i = 0; i < sz(end); i++)
  106.         {
  107.             int tmp = 0;
  108.             for (int j = 0; i < sz(end[i]); j++)
  109.                 if (end[i][j] != '.') tmp += (int)(end[i][j]-'0');
  110.             sumend = max(sumend, tmp);
  111.         }
  112.         ans = sum + sumstart + sumend;   
  113.     } else
  114.     {
  115.         int sumstartend = 0;
  116.         for (int i = 0; i < sz(startend); i++)
  117.         {
  118.             int tmp = 0;
  119.             for (int j = 0; i < sz(startend[i]); j++)
  120.                 if (startend[i][j] != '.') tmp += (int)(startend[i][j]-'0');
  121.             sumstartend = max(sumstartend, tmp);
  122.         }
  123.         int sumstart = 0;
  124.         int sumend = 0;
  125.         for (int i = 0; i < sz(start); i++)
  126.         {
  127.             int tmp = 0;
  128.             for (int j = 0; i < sz(start[i]); j++)
  129.                 if (start[i][j] != '.') tmp += (int)(start[i][j]-'0');
  130.             sumstart = max(sumstart, tmp);
  131.         }
  132.         for (int i = 0; i < sz(end); i++)
  133.         {
  134.             int tmp = 0;
  135.             for (int j = 0; i < sz(end[i]); j++)
  136.                 if (end[i][j] != '.') tmp += (int)(end[i][j]-'0');
  137.             sumend = max(sumend, tmp);
  138.         }
  139.         ans = max(sumstartend, sumstart+sumend);
  140.     }
  141.     return ans;
  142. }
  143.  
  144. <%:testing-code%>
  145. //Powered by [KawigiEdit] 2.0!
Add Comment
Please, Sign In to add comment