Untitled
unknown
c_cpp
5 years ago
913 B
11
Indexable
#include <iostream>
using namespace std;
const int maxn = 100005;
int n;
int niza[maxn][3];
int memo[maxn][4];
int f(int x, int previous_activity) {
if(x == n) {
return 0;
}
if(memo[x][previous_activity] != -1) {
return memo[x][previous_activity];
}
int najgolem = -2e9;
for(int j = 0; j < 3; j++) {
if(j != previous_activity) {
najgolem = max(najgolem, f(x + 1, j) + niza[x][j]);
}
}
memo[x][previous_activity] = najgolem;
return memo[x][previous_activity];
}
int main()
{
cin >> n;
for(int i = 0; i < n; i++) {
for(int j = 0; j < 3; j++) {
cin >> niza[i][j];
memo[i][j] = -1;
}
}
int najgolem = 0;
najgolem = max(najgolem, f(0, 0));
najgolem = max(najgolem, f(0, 1));
najgolem = max(najgolem, f(0, 2));
cout << najgolem << endl;
return 0;
}
// 2504
Editor is loading...