Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <iostream>
- #include <fstream>
- #include <vector>
- using namespace std;
- int main()
- {
- ifstream input("C:\\Users\\Максим\\Downloads\\27-44b.txt");
- int n;
- input >> n;
- vector <vector<vector<int>>> dp(n + 1, vector<vector<int>>(2, vector<int>(2, INT_MIN)));
- dp[0][0][0] = 0;
- for (size_t i = 0; i < n; i++)
- {
- int a, b, c;
- input >> a >> b >> c;
- if (a > b) swap(a, b);
- if (b > c) swap(b, c);
- if (a > b) swap(a, b);
- vector <int> f{ a, b, c };
- while (true) {
- a = f[0], b = f[1], c = f[2];
- for (size_t j = 0; j < 2; j++) {
- for (size_t k = 0; k < 2; k++) {
- if (dp[i + 1][(a + j) % 2][(b + k) % 2] < dp[i][j][k] + c) {
- dp[i + 1][(a + j) % 2][(b + k) % 2] = dp[i][j][k] + c;
- }
- }
- }
- if (!next_permutation(begin(f), end(f))) {
- break;
- }
- }
- }
- cout << dp[n][1][1];
- }
- /* kpolyakov файл
- Дана последовательность, которая состоит из троек натуральных чисел. Необходимо распределить все числа на три группы, при этом в каждую группу должно попасть ровно одно число из каждой исходной тройки. Сумма всех чисел как в первой, так и во второй группе должна быть нечётной. Определите максимально возможную сумму всех чисел в третьей группе.
- Входные данные: Даны два входных файла: файл A (27-44a.txt) и файл B (27-44b.txt), каждый из которых содержит в первой строке количество чисел N (1 ≤ N ≤ 100000). Каждая из следующих N строк содержит три натуральных числа, не превышающих 10000.
- Пример входного файла:
- 3
- 1 3 8
- 9 12 4
- 7 11 10
- Для указанных данных искомая сумма равна 31, она соответствует такому распределению чисел по группам: (1, 9, 7), (3, 4, 10), (8, 12, 11). В ответе укажите два числа: сначала искомое значение для файла А, затем для файла B.
- */
Add Comment
Please, Sign In to add comment