_takumi

tough27

Apr 22nd, 2021 (edited)
451
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.99 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.     ifstream input("C:\\Users\\Максим\\Downloads\\inf_22_10_20_27b (1).txt");
  9.     long long int n = 0, a, b;
  10.     input >> n;
  11.     vector <vector<long long int>> dp(n + 1, vector<long long int>(3, 2147483647));
  12.     dp[0][0] = 0;
  13.     for (size_t i = 0; i < n; i++)
  14.     {
  15.         input >> a >> b;
  16.         for (size_t j = 0; j < 3; j++)
  17.         {
  18.             if (dp[i + 1][(j + a) % 3] > dp[i][j] + a)
  19.                 dp[i + 1][(j + a) % 3] = dp[i][j] + a;
  20.             if (dp[i + 1][(j + b) % 3] > dp[i][j] + b)
  21.                 dp[i + 1][(j + b) % 3] = dp[i][j] + b;
  22.         }
  23.     }
  24.     cout << dp[n][0];
  25.     return 0;
  26. }
  27. /*
  28. Набор данных состоит из пар натуральных чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел делилась на 3 и при этом была минимально возможной.
  29. */
Add Comment
Please, Sign In to add comment