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\\inf_22_10_20_27b (1).txt");
- long long int n = 0, a, b;
- input >> n;
- vector <vector<long long int>> dp(n + 1, vector<long long int>(3, 2147483647));
- dp[0][0] = 0;
- for (size_t i = 0; i < n; i++)
- {
- input >> a >> b;
- for (size_t j = 0; j < 3; j++)
- {
- if (dp[i + 1][(j + a) % 3] > dp[i][j] + a)
- dp[i + 1][(j + a) % 3] = dp[i][j] + a;
- if (dp[i + 1][(j + b) % 3] > dp[i][j] + b)
- dp[i + 1][(j + b) % 3] = dp[i][j] + b;
- }
- }
- cout << dp[n][0];
- return 0;
- }
- /*
- Набор данных состоит из пар натуральных чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел делилась на 3 и при этом была минимально возможной.
- */
Add Comment
Please, Sign In to add comment