249892026-02-17 11:24:39Leventusz09Maximális összegű útcpp17Wrong answer 0/100550ms262144 KiB
#include <iostream>
#define DEBUG false

#define IC for(int c=0; c<500; c++)

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];

    // bal felső sarok
    for(int i=0; i<500; i++) L[0][0][i] = 0;
    L[0][0][C[0][0]] = A[0][0];

    // első sor
    for(int i=1; i<M; i++){
        IC{
            if(L[0][i-1][c] > 0 || C[0][i] == c){
                L[0][i][c] = L[0][i-1][c] + A[0][i];
            }else{
                L[0][i][c] = 0;
            }
        }
    }
    
    //első oszlop
    for(int i=1; i<N; i++){
        IC{
            if(L[i-1][0][c] > 0 || C[i][0] == c){
                L[i][0][c] = L[i-1][0][c] + A[i][0];
            }else{
                L[i][0][c] = 0;
            }
        }
    }

    int o=0;
    // az összes többi
    for(int i=1; i<N; i++){
        for(int j=1; j<M; j++){
            IC{
                int cu = L[i-1][j][c];
                int cl = L[i][j-1][c];
                if(cu < 0 && cl < 0){
                    if(C[i][j] == c) L[i][j][c] = A[i][j];
                    else L[i][j][c] = max(cu, cl) + A[i][j];
                }
                else L[i][j][c] = max(cu, cl) + A[i][j];

                if(C[i][j] == c){
                    if(L[i][j][c] > o) o = L[i][j][c];
                }
            }
        }
    }
    #if DEBUG
    for(int i=0; i<N; i++){
        for(int j=0; j<M; j++){
            IC{
                cout << L[i][j][c] << ".";
            }
            cout << "\t";
        }
        cout << "\n";
    }

    #endif
    cout << o << endl;
    
    return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
2Accepted1ms508 KiB
subtask20/4
3Wrong answer1ms316 KiB
4Wrong answer1ms316 KiB
5Wrong answer1ms316 KiB
6Wrong answer1ms316 KiB
7Accepted1ms316 KiB
subtask30/7
8Wrong answer1ms316 KiB
9Wrong answer1ms316 KiB
10Wrong answer1ms316 KiB
11Wrong answer1ms316 KiB
12Accepted1ms316 KiB
13Accepted1ms316 KiB
14Accepted1ms564 KiB
15Accepted3ms1936 KiB
16Accepted1ms316 KiB
17Accepted1ms564 KiB
18Accepted4ms2100 KiB
19Wrong answer1ms316 KiB
20Wrong answer1ms564 KiB
21Wrong answer3ms2100 KiB
22Wrong answer3ms1680 KiB
23Wrong answer3ms1932 KiB
24Wrong answer4ms2100 KiB
25Wrong answer4ms2100 KiB
26Wrong answer4ms2100 KiB
27Wrong answer3ms2100 KiB
subtask40/18
28Wrong answer1ms316 KiB
29Wrong answer1ms316 KiB
30Wrong answer1ms316 KiB
31Wrong answer1ms316 KiB
32Accepted1ms316 KiB
33Accepted1ms316 KiB
34Accepted1ms564 KiB
35Accepted3ms1936 KiB
36Accepted1ms316 KiB
37Accepted1ms564 KiB
38Accepted4ms2100 KiB
39Wrong answer1ms316 KiB
40Wrong answer1ms564 KiB
41Wrong answer3ms2100 KiB
42Wrong answer3ms1680 KiB
43Wrong answer3ms1932 KiB
44Wrong answer4ms2100 KiB
45Wrong answer4ms2100 KiB
46Wrong answer4ms2100 KiB
47Wrong answer3ms2100 KiB
48Wrong answer28ms19808 KiB
49Accepted28ms20020 KiB
50Accepted25ms19928 KiB
51Accepted26ms19844 KiB
52Wrong answer26ms20020 KiB
53Wrong answer28ms20020 KiB
54Wrong answer29ms20020 KiB
55Wrong answer26ms20216 KiB
56Wrong answer28ms18796 KiB
57Wrong answer32ms18856 KiB
58Wrong answer28ms20212 KiB
59Wrong answer32ms20020 KiB
60Wrong answer32ms20020 KiB
61Wrong answer30ms20208 KiB
subtask50/5
62Accepted1ms316 KiB
63Accepted2ms564 KiB
64Runtime error370ms262144 KiB
65Runtime error418ms262144 KiB
66Runtime error493ms262144 KiB
67Runtime error428ms262144 KiB
68Runtime error451ms262144 KiB
subtask60/12
69Accepted1ms316 KiB
70Accepted1ms564 KiB
71Runtime error418ms262144 KiB
72Runtime error374ms262144 KiB
73Runtime error446ms262144 KiB
74Runtime error483ms262144 KiB
75Runtime error453ms262144 KiB
subtask70/54
76Accepted1ms508 KiB
77Accepted1ms316 KiB
78Wrong answer1ms316 KiB
79Wrong answer1ms316 KiB
80Wrong answer1ms316 KiB
81Wrong answer1ms316 KiB
82Accepted1ms316 KiB
83Accepted1ms316 KiB
84Accepted1ms564 KiB
85Accepted3ms1936 KiB
86Accepted1ms316 KiB
87Accepted1ms564 KiB
88Accepted4ms2100 KiB
89Wrong answer1ms316 KiB
90Wrong answer1ms564 KiB
91Wrong answer3ms2100 KiB
92Wrong answer3ms1680 KiB
93Wrong answer3ms1932 KiB
94Wrong answer4ms2100 KiB
95Wrong answer4ms2100 KiB
96Wrong answer4ms2100 KiB
97Wrong answer3ms2100 KiB
98Wrong answer28ms19808 KiB
99Accepted28ms20020 KiB
100Accepted25ms19928 KiB
101Accepted26ms19844 KiB
102Wrong answer26ms20020 KiB
103Wrong answer28ms20020 KiB
104Wrong answer29ms20020 KiB
105Wrong answer26ms20216 KiB
106Wrong answer28ms18796 KiB
107Wrong answer32ms18856 KiB
108Wrong answer28ms20212 KiB
109Wrong answer32ms20020 KiB
110Wrong answer32ms20020 KiB
111Wrong answer30ms20208 KiB
112Accepted1ms316 KiB
113Accepted2ms564 KiB
114Runtime error370ms262144 KiB
115Runtime error418ms262144 KiB
116Runtime error493ms262144 KiB
117Runtime error428ms262144 KiB
118Runtime error451ms262144 KiB
119Accepted1ms316 KiB
120Accepted1ms564 KiB
121Runtime error418ms262144 KiB
122Runtime error374ms262144 KiB
123Runtime error446ms262144 KiB
124Runtime error483ms262144 KiB
125Runtime error453ms262144 KiB
126Wrong answer1ms316 KiB
127Wrong answer1ms568 KiB
128Runtime error386ms262144 KiB
129Runtime error384ms262144 KiB
130Runtime error546ms262144 KiB
131Runtime error533ms262144 KiB
132Runtime error451ms262144 KiB
133Runtime error470ms262144 KiB
134Runtime error500ms262144 KiB
135Runtime error467ms262144 KiB
136Runtime error550ms262144 KiB