249872026-02-17 11:23:44Leventusz09Maximális összegű útcpp17Hibás válasz 0/100395ms262144 KiB
#include <iostream>
#define DEBUG false

#define IC for(int c=0; c<5; 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
1Elfogadva1ms508 KiB
2Elfogadva1ms316 KiB
subtask20/4
3Hibás válasz1ms316 KiB
4Hibás válasz1ms316 KiB
5Hibás válasz1ms316 KiB
6Hibás válasz1ms408 KiB
7Hibás válasz1ms316 KiB
subtask30/7
8Hibás válasz1ms316 KiB
9Hibás válasz1ms316 KiB
10Hibás válasz1ms316 KiB
11Hibás válasz1ms408 KiB
12Hibás válasz1ms316 KiB
13Elfogadva1ms316 KiB
14Elfogadva1ms564 KiB
15Elfogadva3ms2100 KiB
16Elfogadva1ms508 KiB
17Elfogadva1ms564 KiB
18Elfogadva3ms2100 KiB
19Hibás válasz1ms316 KiB
20Hibás válasz1ms564 KiB
21Hibás válasz3ms2100 KiB
22Hibás válasz2ms1844 KiB
23Hibás válasz3ms1964 KiB
24Hibás válasz3ms2100 KiB
25Hibás válasz3ms2100 KiB
26Hibás válasz3ms2100 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álasz1ms408 KiB
32Hibás válasz1ms316 KiB
33Elfogadva1ms316 KiB
34Elfogadva1ms564 KiB
35Elfogadva3ms2100 KiB
36Elfogadva1ms508 KiB
37Elfogadva1ms564 KiB
38Elfogadva3ms2100 KiB
39Hibás válasz1ms316 KiB
40Hibás válasz1ms564 KiB
41Hibás válasz3ms2100 KiB
42Hibás válasz2ms1844 KiB
43Hibás válasz3ms1964 KiB
44Hibás válasz3ms2100 KiB
45Hibás válasz3ms2100 KiB
46Hibás válasz3ms2100 KiB
47Hibás válasz3ms2100 KiB
48Hibás válasz20ms20020 KiB
49Elfogadva21ms20020 KiB
50Elfogadva17ms20020 KiB
51Elfogadva18ms19880 KiB
52Hibás válasz17ms19940 KiB
53Hibás válasz21ms19976 KiB
54Elfogadva17ms19992 KiB
55Hibás válasz21ms20020 KiB
56Hibás válasz19ms18704 KiB
57Hibás válasz19ms18744 KiB
58Hibás válasz24ms20036 KiB
59Hibás válasz25ms20020 KiB
60Hibás válasz20ms20020 KiB
61Hibás válasz26ms20316 KiB
subtask50/5
62Elfogadva2ms508 KiB
63Elfogadva2ms564 KiB
64Futási hiba312ms262144 KiB
65Futási hiba275ms262144 KiB
66Futási hiba381ms262144 KiB
67Futási hiba321ms262144 KiB
68Futási hiba381ms262144 KiB
subtask60/12
69Elfogadva2ms388 KiB
70Elfogadva2ms756 KiB
71Futási hiba273ms262144 KiB
72Futási hiba270ms262144 KiB
73Futási hiba375ms262144 KiB
74Futási hiba374ms262144 KiB
75Futási hiba338ms262144 KiB
subtask70/54
76Elfogadva1ms316 KiB
77Elfogadva1ms316 KiB
78Hibás válasz1ms316 KiB
79Hibás válasz1ms316 KiB
80Hibás válasz1ms316 KiB
81Hibás válasz1ms408 KiB
82Hibás válasz1ms316 KiB
83Elfogadva1ms316 KiB
84Elfogadva1ms564 KiB
85Elfogadva3ms2100 KiB
86Elfogadva1ms508 KiB
87Elfogadva1ms564 KiB
88Elfogadva3ms2100 KiB
89Hibás válasz1ms316 KiB
90Hibás válasz1ms564 KiB
91Hibás válasz3ms2100 KiB
92Hibás válasz2ms1844 KiB
93Hibás válasz3ms1964 KiB
94Hibás válasz3ms2100 KiB
95Hibás válasz3ms2100 KiB
96Hibás válasz3ms2100 KiB
97Hibás válasz3ms2100 KiB
98Hibás válasz20ms20020 KiB
99Elfogadva21ms20020 KiB
100Elfogadva17ms20020 KiB
101Elfogadva18ms19880 KiB
102Hibás válasz17ms19940 KiB
103Hibás válasz21ms19976 KiB
104Elfogadva17ms19992 KiB
105Hibás válasz21ms20020 KiB
106Hibás válasz19ms18704 KiB
107Hibás válasz19ms18744 KiB
108Hibás válasz24ms20036 KiB
109Hibás válasz25ms20020 KiB
110Hibás válasz20ms20020 KiB
111Hibás válasz26ms20316 KiB
112Elfogadva2ms508 KiB
113Elfogadva2ms564 KiB
114Futási hiba312ms262144 KiB
115Futási hiba275ms262144 KiB
116Futási hiba381ms262144 KiB
117Futási hiba321ms262144 KiB
118Futási hiba381ms262144 KiB
119Elfogadva2ms388 KiB
120Elfogadva2ms756 KiB
121Futási hiba273ms262144 KiB
122Futási hiba270ms262144 KiB
123Futási hiba375ms262144 KiB
124Futási hiba374ms262144 KiB
125Futási hiba338ms262144 KiB
126Hibás válasz1ms316 KiB
127Hibás válasz1ms564 KiB
128Futási hiba340ms262144 KiB
129Futási hiba287ms262144 KiB
130Futási hiba344ms262144 KiB
131Futási hiba379ms262144 KiB
132Futási hiba342ms262144 KiB
133Futási hiba340ms262144 KiB
134Futási hiba393ms262144 KiB
135Futási hiba395ms262144 KiB
136Futási hiba352ms262144 KiB