_takumi

num27.6

Feb 18th, 2021 (edited)
831
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.34 KB | None | 0 0
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <fstream>
  4. #include <vector>
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.     ifstream input("C:\\Users\\Максим\\Downloads\\27-44b.txt");
  10.     int n;
  11.     input >> n;
  12.     vector <vector<vector<int>>> dp(n + 1, vector<vector<int>>(2, vector<int>(2, INT_MIN)));
  13.     dp[0][0][0] = 0;
  14.     for (size_t i = 0; i < n; i++)
  15.     {
  16.         int a, b, c;
  17.         input >> a >> b >> c;
  18.         if (a > b) swap(a, b);
  19.         if (b > c) swap(b, c);
  20.         if (a > b) swap(a, b);
  21.         vector <int> f{ a, b, c };
  22.         while (true) {
  23.             a = f[0], b = f[1], c = f[2];
  24.  
  25.             for (size_t j = 0; j < 2; j++) {
  26.                 for (size_t k = 0; k < 2; k++) {
  27.                     if (dp[i + 1][(a + j) % 2][(b + k) % 2] < dp[i][j][k] + c) {
  28.                         dp[i + 1][(a + j) % 2][(b + k) % 2] = dp[i][j][k] + c;
  29.                     }
  30.                 }
  31.             }
  32.             if (!next_permutation(begin(f), end(f))) {
  33.                 break;
  34.             }
  35.         }
  36.     }
  37.     cout << dp[n][1][1];
  38. }
  39. /* kpolyakov файл
  40. Дана последовательность, которая состоит из троек натуральных чисел. Необходимо распределить все числа на три группы, при этом в каждую группу должно попасть ровно одно число из каждой исходной тройки. Сумма всех чисел как в первой, так и во второй группе должна быть нечётной. Определите максимально возможную сумму всех чисел в третьей группе.
  41. Входные данные: Даны два входных файла: файл A (27-44a.txt) и файл B (27-44b.txt), каждый из которых содержит в первой строке количество чисел N (1 ≤ N ≤ 100000). Каждая из следующих N строк содержит три натуральных числа, не превышающих 10000.
  42. Пример входного файла:
  43. 3
  44. 1 3 8
  45. 9 12 4
  46. 7 11 10
  47. Для указанных данных искомая сумма равна 31, она соответствует такому распределению чисел по группам: (1, 9, 7), (3, 4, 10), (8, 12, 11). В ответе укажите два числа: сначала искомое значение для файла А, затем для файла B.
  48. */
Add Comment
Please, Sign In to add comment