Dang_Quan_10_Tin

Untitled

Mar 7th, 2020
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.94 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define NguyenDangQuan the_author
  3.  
  4. #define task ""
  5. #define all(x) x.begin(),x.end()
  6. #define mset(x, i) memset(x,i,sizeof(x))
  7. #define elif else if
  8. #define heap priority_queue
  9. #define fi first
  10. #define se second
  11. #define pb push_back
  12. #define ld long double
  13. #define ll long long
  14. #define ull unsigned long long
  15.  
  16. using namespace std;
  17.  
  18. int typetest;
  19.  
  20. inline void fastIOfileinput(){
  21.     ios_base:: sync_with_stdio(0);
  22.     cin.tie(0);
  23.     cout.tie(0);
  24.     if(fopen(task".inp", "r")){
  25.         freopen(task".inp", "r", stdin);
  26.         freopen(task".out", "w", stdout);
  27.     }
  28.     if(fopen(task".in", "r")){
  29.         freopen(task".in", "r", stdin);
  30.         freopen(task".out", "w", stdout);
  31.     }
  32.     typetest = 0;
  33. }
  34.  
  35. const int N = 4e5 + 2;
  36. int n;
  37.  
  38. #define a harmonyScores
  39.  
  40. int maximumHarmonyScore(std::vector<std::vector<int>> harmonyScores)
  41. {
  42.     int n = harmonyScores.size(), m = harmonyScores[1].size();
  43.     int f[n + 1][m + 1];
  44.     int pos[n + 1][m + 1][m + 1];
  45.     memset(pos, -1, sizeof(pos));
  46.     memset(f, 0, sizeof(f));
  47.     for(int i = 0; i < n; ++i)
  48.         for(int j = 0; j < m; ++j){
  49.             if(i == 0){
  50.                 f[i][j] = a[i][j];
  51.                 pos[i][j][j] = i;
  52.             }
  53.             else{
  54.                 for(int t = 0; t < m; ++t){
  55.                     int sum = f[i - 1][t];
  56.                     int on = pos[i - 1][t][j];
  57.                     int maxn = 0;
  58.                     int coor;
  59.                     if(on == -1)
  60.                         sum += a[i][j];
  61.                     else{
  62.                         sum += a[i][j] - a[pos[i - 1][t][j]][j];
  63.                         for(int h = 0; h < m; ++h)
  64.                             if(pos[i - 1][t][h] == -1)
  65.                                 if( maxn < a[on][h] ){
  66.                                     maxn = a[on][h];
  67.                                     coor = h;
  68.                                 }
  69.                         sum += maxn;
  70.                     }
  71.                     if(f[i][j] < sum){
  72.                         f[i][j] = sum;
  73.                         for(int h = 0; h < m; ++h){
  74.                             pos[i][j][h] = pos[i - 1][t][h];
  75.                         }
  76.                         pos[i][j][j] = i;
  77.                         if(on != -1){
  78.                             pos[i][j][coor] = on;
  79.                         }
  80.                     }
  81.                 }
  82.  
  83.             }
  84.         }
  85. //  for(int i = 0; i < n; ++i)
  86. //      for(int j = 0; j < m; ++j)
  87. //          cout << f[i][j] << (j == m - 1 ? "\n" : " ");
  88.     int ans = 0;
  89.     for(int i = 0; i < m; ++i)
  90.         ans = max(ans, f[n - 1][i]);
  91.     return ans;
  92. }
  93.  
  94. inline void Enter(){
  95.     vector<vector<int> > ss(2, vector<int>(2));
  96.     ss[0][0] = 2;
  97.     ss[0][1] = 5;
  98.     ss[1][0] = 1;
  99.     ss[1][1] = 3;
  100.     cout << maximumHarmonyScore(ss);
  101. }
  102.  
  103. inline void solve(){
  104.  
  105. }
  106.  
  107. int main(){
  108.     fastIOfileinput();
  109.     if(typetest){
  110.         int t;
  111.         cin >> t;
  112.         while(t--){
  113.             Enter();
  114.             solve();
  115.         }
  116.     }
  117.     else{
  118.         Enter();
  119.         solve();
  120.     }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment