Submission #286449

# Submission time Handle Problem Language Result Execution time Memory
286449 2020-08-30T12:17:05 Z evpipis Wombats (IOI13_wombats) C++11
55 / 100
20000 ms 32828 KB
#include "wombats.h"
#include <bits/stdc++.h>
using namespace std;

const int len_n = 5005, len_m = 205, inf = 1e9+10;
int hor[len_n][len_m], ver[len_n][len_m], n, m, k;

struct{
    struct node{
        int to[len_m][len_m];

        node(){
            for (int a = 0; a < m; a++)
                for (int b = 0; b < m; b++)
                    to[a][b] = inf; // check this
        }

        node(int i){
            for (int a = 0, suma = 0; a < m; a++){
                for (int b = 0, dif = suma; b < m; b++){
                    to[a][b] = dif + ver[i][b];

                    if (b < a)
                        dif -= hor[i][b];
                    else
                        dif += hor[i][b];
                }

                suma += hor[i][a];
            }

            if (0){
            printf("-------------------------------------------\n");
            printf("just constructed %d-th leaf\n", i);
            for (int a = 0; a < m; a++){
                for (int b = 0; b < m; b++)
                    printf("%d ", to[a][b]);
                printf("\n");
            }
            printf("-------------------------------------------\n");
            }
        }
    };

    node buck[75], root;

    node join(node fir, node sec){
        node res;

        for (int a = 0; a < m; a++)
            for (int b = 0; b < m; b++)
                for (int c = 0; c < m; c++)
                    res.to[a][b] = min(res.to[a][b], fir.to[a][c]+sec.to[c][b]);

        return res;
    }

    void upd_buck(int b){
        int st = b*k, en = min(n, (b+1)*k);

        buck[b] = node(st);
        for (int i = st+1; i < en; i++)
            buck[b] = join(buck[b], node(i));
    }

    void upd_root(){
        root = buck[0];
        for (int b = 1; b*k < n; b++)
            root = join(root, buck[b]);
    }

    int ask(int a, int b){
        return root.to[a][b];
    }
} data;

void init(int R, int C, int H[5000][200], int V[5000][200]) {
    n = R, m = C;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m-1; j++)
            hor[i][j] = H[i][j];
    for (int i = 0; i < n-1; i++)
        for (int j = 0; j < m; j++)
            ver[i][j] = V[i][j];

    k = sqrt(n);
    for (int b = 0; k*b < n; b++)
        data.upd_buck(b);
    data.upd_root();
}

void changeH(int P, int Q, int W) {
    hor[P][Q] = W;
    data.upd_buck(P/k);
    data.upd_root();
}

void changeV(int P, int Q, int W) {
    ver[P][Q] = W;
    data.upd_buck(P/k);
    data.upd_root();
}

int escape(int V1, int V2) {
    return data.ask(V1, V2);
}

Compilation message

grader.c: In function 'int main()':
grader.c:15:6: warning: variable 'res' set but not used [-Wunused-but-set-variable]
   15 |  int res;
      |      ^~~
# Verdict Execution time Memory Grader output
1 Correct 2948 ms 20900 KB Output is correct
2 Correct 2944 ms 20816 KB Output is correct
3 Correct 2976 ms 22392 KB Output is correct
4 Correct 2875 ms 20856 KB Output is correct
5 Correct 2891 ms 20856 KB Output is correct
6 Correct 1 ms 1152 KB Output is correct
7 Correct 1 ms 1152 KB Output is correct
8 Correct 1 ms 1152 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 1152 KB Output is correct
2 Correct 2 ms 1152 KB Output is correct
3 Correct 1 ms 1152 KB Output is correct
4 Correct 3 ms 1920 KB Output is correct
5 Correct 3 ms 1920 KB Output is correct
6 Correct 3 ms 1920 KB Output is correct
7 Correct 3 ms 1920 KB Output is correct
8 Correct 3 ms 1920 KB Output is correct
9 Correct 3 ms 1920 KB Output is correct
10 Correct 3 ms 1920 KB Output is correct
11 Correct 88 ms 2996 KB Output is correct
12 Correct 3 ms 1920 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2441 ms 3288 KB Output is correct
2 Correct 2376 ms 3320 KB Output is correct
3 Correct 2409 ms 3192 KB Output is correct
4 Correct 2432 ms 3064 KB Output is correct
5 Correct 2387 ms 3192 KB Output is correct
6 Correct 1 ms 1152 KB Output is correct
7 Correct 1 ms 1152 KB Output is correct
8 Correct 1 ms 1152 KB Output is correct
9 Correct 11770 ms 3196 KB Output is correct
10 Correct 2 ms 1536 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2894 ms 28872 KB Output is correct
2 Correct 2912 ms 28756 KB Output is correct
3 Correct 2905 ms 28792 KB Output is correct
4 Correct 2981 ms 29620 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2446 ms 3332 KB Output is correct
2 Correct 2372 ms 3320 KB Output is correct
3 Correct 2432 ms 3192 KB Output is correct
4 Correct 2417 ms 3196 KB Output is correct
5 Correct 2358 ms 3192 KB Output is correct
6 Correct 2879 ms 28792 KB Output is correct
7 Correct 2896 ms 28792 KB Output is correct
8 Correct 2915 ms 28792 KB Output is correct
9 Correct 2923 ms 29560 KB Output is correct
10 Correct 2888 ms 20924 KB Output is correct
11 Correct 2874 ms 20816 KB Output is correct
12 Correct 2978 ms 22392 KB Output is correct
13 Correct 2932 ms 20732 KB Output is correct
14 Correct 2865 ms 20856 KB Output is correct
15 Correct 1 ms 1152 KB Output is correct
16 Correct 1 ms 1152 KB Output is correct
17 Correct 1 ms 1152 KB Output is correct
18 Correct 3 ms 1920 KB Output is correct
19 Correct 3 ms 1920 KB Output is correct
20 Correct 3 ms 1920 KB Output is correct
21 Correct 3 ms 2048 KB Output is correct
22 Correct 3 ms 1920 KB Output is correct
23 Correct 3 ms 1920 KB Output is correct
24 Correct 3 ms 1920 KB Output is correct
25 Correct 88 ms 2936 KB Output is correct
26 Correct 3 ms 1920 KB Output is correct
27 Correct 11656 ms 3108 KB Output is correct
28 Execution timed out 20038 ms 32828 KB Time limit exceeded
29 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2432 ms 3268 KB Output is correct
2 Correct 2355 ms 3268 KB Output is correct
3 Correct 2445 ms 3192 KB Output is correct
4 Correct 2438 ms 3192 KB Output is correct
5 Correct 2366 ms 3192 KB Output is correct
6 Correct 2866 ms 28792 KB Output is correct
7 Correct 2915 ms 28796 KB Output is correct
8 Correct 2890 ms 28796 KB Output is correct
9 Correct 2969 ms 29780 KB Output is correct
10 Correct 2922 ms 20860 KB Output is correct
11 Correct 2900 ms 20856 KB Output is correct
12 Correct 2976 ms 22360 KB Output is correct
13 Correct 2920 ms 20856 KB Output is correct
14 Correct 2915 ms 20828 KB Output is correct
15 Execution timed out 20086 ms 21952 KB Time limit exceeded
16 Halted 0 ms 0 KB -