Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- const int maxn = 1e5 + 10;
- const int INF = 2e9 + 5;
- int n;
- int a[maxn][4];
- int happiness[maxn][4];
- int main(){
- cin >> n;
- for(int i = 0; i < n; ++i) {
- cin >> a[i][0] >> a[i][1] >> a[i][2];
- happiness[i][0] = happiness[i][1] = happiness[i][2] = -INF;
- }
- happiness[0][0] = a[0][0];
- happiness[0][1] = a[0][1];
- happiness[0][2] = a[0][2];
- for(int day = 1; day < n; ++day) {
- for(int prev_activity = 0; prev_activity < 3; ++prev_activity) {
- for(int nxt_activity = 0; nxt_activity < 3; ++nxt_activity) {
- if(prev_activity == nxt_activity) {
- // ista aktivnost ne smee da se pravi vo 2 posledovatelni denovi
- continue;
- }
- happiness[day][nxt_activity] = max(happiness[day][nxt_activity], happiness[day - 1][prev_activity] + a[day][nxt_activity]);
- }
- }
- }
- // for(int i = 0; i < n; ++i) {
- // cout << "Day " << i + 1 << ":\n";
- // for(int j = 0; j < 3; ++j) {
- // cout << "Activity: " << j + 1 << " " << happiness[i][j] << endl;
- // }
- // cout << endl;
- // }
- cout << max(max(happiness[n - 1][0], happiness[n - 1][1]), happiness[n - 1][2]) << endl;
- return 0;
- }
- /*
- 3
- 10 20 30
- 30 40 1005
- 1 2 3
- */
Advertisement
Add Comment
Please, Sign In to add comment