Submission #1358343

#TimeUsernameProblemLanguageResultExecution timeMemory
1358343pcheloveksWombats (IOI13_wombats)C++20
28 / 100
20085 ms10128 KiB
#include "wombats.h"
#include <bits/stdc++.h>

using namespace std;

const int INF = 1e9;

int r, c;
vector < vector < int > > h, v;

void init(int R, int C, int H[5000][200], int V[5000][200]) {
    r = R; c = C;

    h.resize(r, vector < int >(c));
    v.resize(r, vector < int >(c));

    for(int i = 0; i < r; i++) {
        for(int j = 0; j < c; j++) {
            h[i][j] = H[i][j];
            v[i][j] = V[i][j];
        }
    }
}

void changeH(int P, int Q, int W) {
    h[P][Q] = W;
}

void changeV(int P, int Q, int W) {
    v[P][Q] = W;
}

int escape(int v1, int v2) {
    vector < vector < int > > F(r, vector < int >(c, INF));

    vector < vector < int > > p(r, vector < int >(c, 0));
    for(int i = 0; i < r; i++) {
        for(int j = 1; j < c; j++) {
            p[i][j] = h[i][j - 1] + p[i][j - 1]; 
        }
    }

    for(int i = 0; i < v1; i++) F[0][i] = p[0][v1] - p[0][i];
    for(int i = v1; i < c; i++) F[0][i] = p[0][i] - p[0][v1];

    for(int i = 1; i < r; i++) {
        int mi = INF;
        for(int j = 0; j < c; j++) {
            mi = min(mi, F[i - 1][j] + v[i - 1][j] - p[i][j]);
            F[i][j] = min(F[i][j], mi + p[i][j]);
        }

        mi = INF;
        for(int j = c - 1; j >= 0; j--) {
            mi = min(mi, F[i - 1][j] + v[i - 1][j] + p[i][j]);
            F[i][j] = min(F[i][j], mi - p[i][j]);
        }
    }

    return F[r - 1][v2];
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...