josiftepe

Untitled

Nov 21st, 2020
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.43 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <map>
  4. using namespace std;
  5.  
  6. int mat[110][110];
  7. int dp[110][110];
  8.  
  9. int main()
  10. {
  11.     int n;
  12.     cin>>n;
  13.  
  14.     for (int i=0;i<n+5;i++)
  15.     {
  16.         for (int j=0;j<n+5;j++)
  17.         {
  18.           dp[i][j]= (1e9);
  19.             mat[i][j]=-1;
  20.         }
  21.     }
  22.     for (int i=0; i<n;i++)
  23.          {
  24.              for (int j=0; j < n - i ;j++)
  25.              {
  26.                  cin>>mat[i][j];
  27.              }
  28.          }
  29.  
  30.     dp[0][0] = mat[0][0];
  31.     for(int j = 1; j < n; ++j) {
  32.         dp[0][j] = dp[0][j - 1] + mat[0][j];
  33.     }
  34.     for(int i = 1; i < n; ++i) {
  35.         dp[i][0] = dp[i - 1][0] + mat[i][0];
  36.        
  37.     }
  38.     for(int i = 0; i < n; ++i) {
  39.         for(int j = 0; j < n - i; ++j) {
  40.             if(i > 0) {
  41.                 dp[i][j] = min(dp[i][j], dp[i - 1][j] + mat[i][j]);
  42.             }
  43.             if(j > 0) {
  44.                 dp[i][j] = min(dp[i][j], dp[i][j - 1] + mat[i][j]);
  45.             }
  46.             if(i > 0 and j > 0) {
  47.                 dp[i][j] = min(dp[i][j], dp[i - 1][j - 1] + mat[i][j]);
  48.             }
  49.         }
  50.     }
  51.     int najmal = (1e9);
  52.     int x, y;
  53.     for(int i = 0; i < n; ++i){
  54.         if(dp[i][n - 1 - i] < najmal) {
  55.             najmal = dp[i][n - 1 - i];
  56.             x = i + 1;
  57.             y = n - i;
  58.         }
  59.     }
  60.     cout << najmal << endl << x << " " << y << endl;
  61.     return 0;
  62. }
  63.  
  64. /*
  65.  3
  66.  
  67.  1| 1 2
  68.  -|---
  69.  2| 1
  70.  2|
  71.  */
  72.  
Advertisement
Add Comment
Please, Sign In to add comment