249892026-02-17 11:24:39Leventusz09Maximális összegű útcpp17Hibás válasz 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Elfogadva1ms508 KiB
subtask20/4
3Hibás válasz1ms316 KiB
4Hibás válasz1ms316 KiB
5Hibás válasz1ms316 KiB
6Hibás válasz1ms316 KiB
7Elfogadva1ms316 KiB
subtask30/7
8Hibás válasz1ms316 KiB
9Hibás válasz1ms316 KiB
10Hibás válasz1ms316 KiB
11Hibás válasz1ms316 KiB
12Elfogadva1ms316 KiB
13Elfogadva1ms316 KiB
14Elfogadva1ms564 KiB
15Elfogadva3ms1936 KiB
16Elfogadva1ms316 KiB
17Elfogadva1ms564 KiB
18Elfogadva4ms2100 KiB
19Hibás válasz1ms316 KiB
20Hibás válasz1ms564 KiB
21Hibás válasz3ms2100 KiB
22Hibás válasz3ms1680 KiB
23Hibás válasz3ms1932 KiB
24Hibás válasz4ms2100 KiB
25Hibás válasz4ms2100 KiB
26Hibás válasz4ms2100 KiB
27Hibás válasz3ms2100 KiB
subtask40/18
28Hibás válasz1ms316 KiB
29Hibás válasz1ms316 KiB
30Hibás válasz1ms316 KiB
31Hibás válasz1ms316 KiB
32Elfogadva1ms316 KiB
33Elfogadva1ms316 KiB
34Elfogadva1ms564 KiB
35Elfogadva3ms1936 KiB
36Elfogadva1ms316 KiB
37Elfogadva1ms564 KiB
38Elfogadva4ms2100 KiB
39Hibás válasz1ms316 KiB
40Hibás válasz1ms564 KiB
41Hibás válasz3ms2100 KiB
42Hibás válasz3ms1680 KiB
43Hibás válasz3ms1932 KiB
44Hibás válasz4ms2100 KiB
45Hibás válasz4ms2100 KiB
46Hibás válasz4ms2100 KiB
47Hibás válasz3ms2100 KiB
48Hibás válasz28ms19808 KiB
49Elfogadva28ms20020 KiB
50Elfogadva25ms19928 KiB
51Elfogadva26ms19844 KiB
52Hibás válasz26ms20020 KiB
53Hibás válasz28ms20020 KiB
54Hibás válasz29ms20020 KiB
55Hibás válasz26ms20216 KiB
56Hibás válasz28ms18796 KiB
57Hibás válasz32ms18856 KiB
58Hibás válasz28ms20212 KiB
59Hibás válasz32ms20020 KiB
60Hibás válasz32ms20020 KiB
61Hibás válasz30ms20208 KiB
subtask50/5
62Elfogadva1ms316 KiB
63Elfogadva2ms564 KiB
64Futási hiba370ms262144 KiB
65Futási hiba418ms262144 KiB
66Futási hiba493ms262144 KiB
67Futási hiba428ms262144 KiB
68Futási hiba451ms262144 KiB
subtask60/12
69Elfogadva1ms316 KiB
70Elfogadva1ms564 KiB
71Futási hiba418ms262144 KiB
72Futási hiba374ms262144 KiB
73Futási hiba446ms262144 KiB
74Futási hiba483ms262144 KiB
75Futási hiba453ms262144 KiB
subtask70/54
76Elfogadva1ms508 KiB
77Elfogadva1ms316 KiB
78Hibás válasz1ms316 KiB
79Hibás válasz1ms316 KiB
80Hibás válasz1ms316 KiB
81Hibás válasz1ms316 KiB
82Elfogadva1ms316 KiB
83Elfogadva1ms316 KiB
84Elfogadva1ms564 KiB
85Elfogadva3ms1936 KiB
86Elfogadva1ms316 KiB
87Elfogadva1ms564 KiB
88Elfogadva4ms2100 KiB
89Hibás válasz1ms316 KiB
90Hibás válasz1ms564 KiB
91Hibás válasz3ms2100 KiB
92Hibás válasz3ms1680 KiB
93Hibás válasz3ms1932 KiB
94Hibás válasz4ms2100 KiB
95Hibás válasz4ms2100 KiB
96Hibás válasz4ms2100 KiB
97Hibás válasz3ms2100 KiB
98Hibás válasz28ms19808 KiB
99Elfogadva28ms20020 KiB
100Elfogadva25ms19928 KiB
101Elfogadva26ms19844 KiB
102Hibás válasz26ms20020 KiB
103Hibás válasz28ms20020 KiB
104Hibás válasz29ms20020 KiB
105Hibás válasz26ms20216 KiB
106Hibás válasz28ms18796 KiB
107Hibás válasz32ms18856 KiB
108Hibás válasz28ms20212 KiB
109Hibás válasz32ms20020 KiB
110Hibás válasz32ms20020 KiB
111Hibás válasz30ms20208 KiB
112Elfogadva1ms316 KiB
113Elfogadva2ms564 KiB
114Futási hiba370ms262144 KiB
115Futási hiba418ms262144 KiB
116Futási hiba493ms262144 KiB
117Futási hiba428ms262144 KiB
118Futási hiba451ms262144 KiB
119Elfogadva1ms316 KiB
120Elfogadva1ms564 KiB
121Futási hiba418ms262144 KiB
122Futási hiba374ms262144 KiB
123Futási hiba446ms262144 KiB
124Futási hiba483ms262144 KiB
125Futási hiba453ms262144 KiB
126Hibás válasz1ms316 KiB
127Hibás válasz1ms568 KiB
128Futási hiba386ms262144 KiB
129Futási hiba384ms262144 KiB
130Futási hiba546ms262144 KiB
131Futási hiba533ms262144 KiB
132Futási hiba451ms262144 KiB
133Futási hiba470ms262144 KiB
134Futási hiba500ms262144 KiB
135Futási hiba467ms262144 KiB
136Futási hiba550ms262144 KiB