Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define NguyenDangQuan the_author
- #define task ""
- #define all(x) x.begin(),x.end()
- #define mset(x, i) memset(x,i,sizeof(x))
- #define elif else if
- #define heap priority_queue
- #define fi first
- #define se second
- #define pb push_back
- #define ld long double
- #define ll long long
- #define ull unsigned long long
- using namespace std;
- int typetest;
- inline void fastIOfileinput(){
- ios_base:: sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- if(fopen(task".inp", "r")){
- freopen(task".inp", "r", stdin);
- freopen(task".out", "w", stdout);
- }
- if(fopen(task".in", "r")){
- freopen(task".in", "r", stdin);
- freopen(task".out", "w", stdout);
- }
- typetest = 0;
- }
- const int N = 4e5 + 2;
- int n;
- #define a harmonyScores
- int maximumHarmonyScore(std::vector<std::vector<int>> harmonyScores)
- {
- int n = harmonyScores.size(), m = harmonyScores[1].size();
- int f[n + 1][m + 1];
- int pos[n + 1][m + 1][m + 1];
- memset(pos, -1, sizeof(pos));
- memset(f, 0, sizeof(f));
- for(int i = 0; i < n; ++i)
- for(int j = 0; j < m; ++j){
- if(i == 0){
- f[i][j] = a[i][j];
- pos[i][j][j] = i;
- }
- else{
- for(int t = 0; t < m; ++t){
- int sum = f[i - 1][t];
- int on = pos[i - 1][t][j];
- int maxn = 0;
- int coor;
- if(on == -1)
- sum += a[i][j];
- else{
- sum += a[i][j] - a[pos[i - 1][t][j]][j];
- for(int h = 0; h < m; ++h)
- if(pos[i - 1][t][h] == -1)
- if( maxn < a[on][h] ){
- maxn = a[on][h];
- coor = h;
- }
- sum += maxn;
- }
- if(f[i][j] < sum){
- f[i][j] = sum;
- for(int h = 0; h < m; ++h){
- pos[i][j][h] = pos[i - 1][t][h];
- }
- pos[i][j][j] = i;
- if(on != -1){
- pos[i][j][coor] = on;
- }
- }
- }
- }
- }
- // for(int i = 0; i < n; ++i)
- // for(int j = 0; j < m; ++j)
- // cout << f[i][j] << (j == m - 1 ? "\n" : " ");
- int ans = 0;
- for(int i = 0; i < m; ++i)
- ans = max(ans, f[n - 1][i]);
- return ans;
- }
- inline void Enter(){
- vector<vector<int> > ss(2, vector<int>(2));
- ss[0][0] = 2;
- ss[0][1] = 5;
- ss[1][0] = 1;
- ss[1][1] = 3;
- cout << maximumHarmonyScore(ss);
- }
- inline void solve(){
- }
- int main(){
- fastIOfileinput();
- if(typetest){
- int t;
- cin >> t;
- while(t--){
- Enter();
- solve();
- }
- }
- else{
- Enter();
- solve();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment