253152026-02-19 09:27:58Leventusz09Maximális összegű útcpp17Accepted 100/100476ms6224 KiB
#include <limits.h>
#include <iostream>
#include <vector>
#define DEBUG false
#define int long long
#define LX LLONG_MIN

#if DEBUG
#define IC for(int c=0; c<2; c++)
#else
#define IC for(int c=0; c<500; c++)
#endif

using namespace std;

signed main(){
    int N, M;
    cin >> N >> M;

    int A[N][M];
    for(int i=0; i<N; i++) for(int j=0; j<M; j++) cin >> A[i][j];
    int C[N][M];
    for(int i=0; i<N; i++) for(int j=0; j<M; j++){
        cin >> C[i][j];
        C[i][j]--;
    }

    //int L[N][M][500];
    int o = A[0][0];
    int LR[M][500];
    int LN[500];
    for(int i=0; i<M; i++) IC LR[i][c] = 0;

    for(int i=0; i<N; i++){
        for(int j=0; j<M; j++){
            IC{
                int lu, ll;
                if(i == 0) lu = LX;
                else lu = LR[j][c];
                if(j == 0) ll = LX;
                else ll= LN[c];

                if(c == C[i][j]) LN[c] = max(0LL, max(ll, lu)) + A[i][j];
                else {
                    if(lu == LX){
                        if(ll == LX) LN[c] = LX;
                        else LN[c] = ll + A[i][j];
                    }else{
                        if(ll == LX) LN[c] = lu + A[i][j];
                        else LN[c] = max(lu, ll) + A[i][j];
                    }
                }
                LR[j][c] = LN[c];

                if(C[i][j] == c) if(LN[c] > o) o = LN[c];
            }
        }

        #if DEBUG
        for(int i=0; i<M; i++){
            IC{
                cout << LR[i][c] << ".";
            }
            cout << " ";
        }
        cout << endl;
        #endif
    }

    cout << o << endl;
    
    return 0;
}

/*
3 3
1 1 1
1 1 1
1 1 1
1 2 3
4 5 6
7 8 9

*/
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms500 KiB
2Accepted1ms316 KiB
subtask24/4
3Accepted1ms316 KiB
4Accepted2ms316 KiB
5Accepted1ms376 KiB
6Accepted1ms316 KiB
7Accepted1ms316 KiB
subtask37/7
8Accepted1ms316 KiB
9Accepted2ms316 KiB
10Accepted1ms376 KiB
11Accepted1ms316 KiB
12Accepted1ms316 KiB
13Accepted1ms316 KiB
14Accepted1ms316 KiB
15Accepted2ms316 KiB
16Accepted1ms508 KiB
17Accepted1ms316 KiB
18Accepted2ms316 KiB
19Accepted1ms388 KiB
20Accepted1ms316 KiB
21Accepted4ms536 KiB
22Accepted3ms540 KiB
23Accepted3ms316 KiB
24Accepted3ms316 KiB
25Accepted3ms316 KiB
26Accepted3ms316 KiB
27Accepted4ms508 KiB
subtask418/18
28Accepted1ms316 KiB
29Accepted2ms316 KiB
30Accepted1ms376 KiB
31Accepted1ms316 KiB
32Accepted1ms316 KiB
33Accepted1ms316 KiB
34Accepted1ms316 KiB
35Accepted2ms316 KiB
36Accepted1ms508 KiB
37Accepted1ms316 KiB
38Accepted2ms316 KiB
39Accepted1ms388 KiB
40Accepted1ms316 KiB
41Accepted4ms536 KiB
42Accepted3ms540 KiB
43Accepted3ms316 KiB
44Accepted3ms316 KiB
45Accepted3ms316 KiB
46Accepted3ms316 KiB
47Accepted4ms508 KiB
48Accepted17ms804 KiB
49Accepted17ms820 KiB
50Accepted17ms916 KiB
51Accepted17ms944 KiB
52Accepted17ms820 KiB
53Accepted17ms1124 KiB
54Accepted21ms820 KiB
55Accepted21ms820 KiB
56Accepted23ms820 KiB
57Accepted23ms820 KiB
58Accepted20ms948 KiB
59Accepted19ms820 KiB
60Accepted20ms1012 KiB
61Accepted25ms1160 KiB
subtask55/5
62Accepted2ms316 KiB
63Accepted2ms316 KiB
64Accepted402ms6188 KiB
65Accepted402ms6196 KiB
66Accepted449ms5940 KiB
67Accepted423ms5684 KiB
68Accepted467ms6196 KiB
subtask612/12
69Accepted1ms508 KiB
70Accepted2ms508 KiB
71Accepted404ms6196 KiB
72Accepted404ms6120 KiB
73Accepted451ms5936 KiB
74Accepted423ms5636 KiB
75Accepted469ms6196 KiB
subtask754/54
76Accepted2ms316 KiB
77Accepted1ms316 KiB
78Accepted1ms316 KiB
79Accepted2ms316 KiB
80Accepted1ms376 KiB
81Accepted1ms316 KiB
82Accepted1ms316 KiB
83Accepted1ms316 KiB
84Accepted1ms316 KiB
85Accepted2ms316 KiB
86Accepted1ms508 KiB
87Accepted1ms316 KiB
88Accepted2ms316 KiB
89Accepted1ms388 KiB
90Accepted1ms316 KiB
91Accepted4ms536 KiB
92Accepted3ms540 KiB
93Accepted3ms316 KiB
94Accepted3ms316 KiB
95Accepted3ms316 KiB
96Accepted3ms316 KiB
97Accepted4ms508 KiB
98Accepted17ms804 KiB
99Accepted17ms820 KiB
100Accepted17ms916 KiB
101Accepted17ms944 KiB
102Accepted17ms820 KiB
103Accepted17ms1124 KiB
104Accepted21ms820 KiB
105Accepted21ms820 KiB
106Accepted23ms820 KiB
107Accepted23ms820 KiB
108Accepted20ms948 KiB
109Accepted19ms820 KiB
110Accepted20ms1012 KiB
111Accepted25ms1160 KiB
112Accepted2ms316 KiB
113Accepted2ms316 KiB
114Accepted402ms6188 KiB
115Accepted402ms6196 KiB
116Accepted449ms5940 KiB
117Accepted423ms5684 KiB
118Accepted467ms6196 KiB
119Accepted1ms508 KiB
120Accepted2ms508 KiB
121Accepted404ms6196 KiB
122Accepted404ms6120 KiB
123Accepted451ms5936 KiB
124Accepted423ms5636 KiB
125Accepted469ms6196 KiB
126Accepted1ms508 KiB
127Accepted1ms316 KiB
128Accepted368ms6064 KiB
129Accepted368ms6192 KiB
130Accepted418ms6048 KiB
131Accepted395ms5688 KiB
132Accepted470ms6224 KiB
133Accepted472ms6212 KiB
134Accepted476ms6196 KiB
135Accepted476ms6084 KiB
136Accepted437ms6196 KiB