Advertisement
Josif_tepe

Untitled

Apr 13th, 2023
744
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4.  
  5. using namespace std;
  6. const int maxn = 250;
  7. int main() {
  8.     ios_base::sync_with_stdio(false);
  9.     ifstream cin("248.in");
  10.     ofstream cout("248.out");
  11.     int n;
  12.     cin >> n;
  13.     vector<int> cows(n);
  14.     vector<vector<int>> dp(n + 1, vector<int>(n + 1, 0));
  15.  
  16.     for(int i = 0; i < n; i++) {
  17.         cin >> cows[i];
  18.         dp[i][i] = cows[i];
  19.     }
  20.    
  21.     for(int i = n - 1; i >= 0; i--) {
  22.         for(int j = i + 1; j < n; j++) {
  23.             dp[i][j] = -2e9;
  24.            
  25.             if(i + 1 < n) {
  26.                 if(dp[i + 1][j] == cows[i]) {
  27.                     dp[i][j] = max(dp[i][j], cows[i] + 1);
  28.                 }
  29.             }
  30.             if(j - 1 >= 0) {
  31.                 if(dp[i][j - 1] == cows[j]) {
  32.                     dp[i][j] = max(dp[i][j], cows[j] + 1);
  33.                 }
  34.             }
  35.            
  36.             for(int k = i + 1; k < j; k++) {
  37.                 if(dp[i][k] == dp[k + 1][j] and dp[k + 1][j] != -2e9) {
  38.                     dp[i][j] = max(dp[i][j], dp[i][k] + 1);
  39.                 }
  40.             }
  41.         }
  42.     }
  43.    
  44.     int result = 0;
  45.     for(int i = 0; i < n; i++) {
  46.         for(int j = 0; j < n; j++) {
  47.             result = max(result, dp[i][j]);
  48.         }
  49.     }
  50.     cout << result << endl;
  51.    
  52.     return 0;
  53. }
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement