Submission #678745

# Submission time Handle Problem Language Result Execution time Memory
678745 2023-01-06T13:09:58 Z jiahng Wombats (IOI13_wombats) C++14
55 / 100
14671 ms 262144 KB
#include "wombats.h"
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int,int> pi;
typedef vector <int> vi;
typedef vector <pi> vpi;
typedef pair<pi, ll> pii;
typedef set <ll> si;
typedef long double ld;
#define f first
#define s second
#define mp make_pair
#define FOR(i,s,e) for(int i=s;i<=int(e);++i)
#define DEC(i,s,e) for(int i=s;i>=int(e);--i)
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define lbd(x, y) lower_bound(all(x), y)
#define ubd(x, y) upper_bound(all(x), y)
#define aFOR(i,x) for (auto i: x)
#define mem(x,i) memset(x,i,sizeof x)
#define fast ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define maxn 200010
#define INF (ll)1e9
#define MOD 1000000007
typedef pair <vi, int> pvi;
typedef pair <int,pi> ipi;
typedef vector <pii> vpii;

int R,C;
int H[5000][200], V[5000][200], ss[5000][200];
int tmp[200][200];
struct node{
    int s,e,m;
    int val[200][200];
    node *l,*r;
    bool leaf = 0;

    node(int _s,int _e){
        s = _s; e = _e; m = (s + e) / 2;

        if (e-s+1 > 4){
            l = new node(s,m); r = new node(m+1,e);
            merge();
        }else{
            leaf = 1;
            compleaf();
        }
    }
    void merge(){
        FOR(j,0,C-1) merge_one(0,C-1,0,C-1,j);
    }
    void merge_one(int a,int b,int vl,int vr, int j){
        if (a > b) return;
        int c = (a + b) / 2;

        int opt = -1;
        val[c][j] = INF;
        FOR(k,vl,vr){
            int res = l->val[c][k] + r->val[k][j] + V[m][k];
            if (res < val[c][j]){
                opt = k; val[c][j] = res;
            }
        }
        merge_one(a,c-1,vl,opt,j);
        merge_one(c+1,b,opt,vr,j);
    }

    void updV(int row){
        if (leaf){
            compleaf(); return;
        }
        if (m < row) r->updV(row);
        else if (m > row) l->updV(row);

        merge();
    }
    void compleaf(){
        FOR(i,0,C-1) FOR(j,0,C-1) val[i][j] = abs(ss[e][i] - ss[e][j]);
        DEC(l,e-1,s){
            FOR(i,0,C-1) FOR(j,0,C-1){
                tmp[i][j] = INF;
                FOR(k,0,C-1){
                    tmp[i][j] = min(tmp[i][j],
                            val[k][j] + abs(ss[l][k] - ss[l][i]) + V[l][k]);
                }
            }
            FOR(i,0,C-1) FOR(j,0,C-1) val[i][j] = tmp[i][j];
        }
    }

    void updH(int row){
        if (leaf){
            compleaf();
            return;
        }
        if (row > m) r->updH(row);
        else l->updH(row);
        merge();
    }
}*root;
void init(int R, int C, int H[5000][200], int V[5000][200]) {
    ::R = R; ::C = C;
    FOR(i,0,R-1) FOR(j,0,C-1){
        ::H[i][j] = H[i][j];
        ::V[i][j] = V[i][j];
    }
    FOR(i,0,R-1){
        ss[i][0] = 0;
        
        FOR(j,1,C-1){
            ss[i][j] = ss[i][j-1] + H[i][j-1];
        }
    }
    root = new node(0,R-1);

    /*
    FOR(i,0,C-1){
        FOR(j,0,C-1) cout << root->val[i][j] << ' ';
        cout << '\n';
    }
    */
}

void changeH(int P, int Q, int W) {
    H[P][Q] = W; 
    FOR(j,1,C-1) ss[P][j] = ss[P][j-1] + H[P][j-1];

    root->updH(P);
}

void changeV(int P, int Q, int W) {
    V[P][Q] = W;
    root->updV(P);
}

int escape(int V1, int V2) {
    return root->val[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 21 ms 47952 KB Output is correct
2 Correct 22 ms 47948 KB Output is correct
3 Correct 86 ms 49612 KB Output is correct
4 Correct 24 ms 47924 KB Output is correct
5 Correct 21 ms 48008 KB Output is correct
6 Correct 0 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 0 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 724 KB Output is correct
5 Correct 1 ms 724 KB Output is correct
6 Correct 2 ms 724 KB Output is correct
7 Correct 1 ms 724 KB Output is correct
8 Correct 1 ms 596 KB Output is correct
9 Correct 1 ms 596 KB Output is correct
10 Correct 1 ms 724 KB Output is correct
11 Correct 65 ms 1732 KB Output is correct
12 Correct 1 ms 724 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 487 ms 6104 KB Output is correct
2 Correct 461 ms 6112 KB Output is correct
3 Correct 563 ms 6112 KB Output is correct
4 Correct 483 ms 6112 KB Output is correct
5 Correct 513 ms 6196 KB Output is correct
6 Correct 0 ms 340 KB Output is correct
7 Correct 0 ms 340 KB Output is correct
8 Correct 0 ms 340 KB Output is correct
9 Correct 2261 ms 6112 KB Output is correct
10 Correct 0 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 27 ms 51864 KB Output is correct
2 Correct 26 ms 51836 KB Output is correct
3 Correct 27 ms 51844 KB Output is correct
4 Correct 60 ms 52620 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 485 ms 6108 KB Output is correct
2 Correct 425 ms 6128 KB Output is correct
3 Correct 560 ms 6112 KB Output is correct
4 Correct 452 ms 6088 KB Output is correct
5 Correct 509 ms 6108 KB Output is correct
6 Correct 25 ms 51796 KB Output is correct
7 Correct 25 ms 51844 KB Output is correct
8 Correct 28 ms 51840 KB Output is correct
9 Correct 59 ms 52684 KB Output is correct
10 Correct 23 ms 47940 KB Output is correct
11 Correct 23 ms 47956 KB Output is correct
12 Correct 87 ms 49512 KB Output is correct
13 Correct 22 ms 47956 KB Output is correct
14 Correct 22 ms 47904 KB Output is correct
15 Correct 0 ms 260 KB Output is correct
16 Correct 0 ms 340 KB Output is correct
17 Correct 0 ms 340 KB Output is correct
18 Correct 1 ms 724 KB Output is correct
19 Correct 1 ms 724 KB Output is correct
20 Correct 1 ms 724 KB Output is correct
21 Correct 1 ms 724 KB Output is correct
22 Correct 1 ms 596 KB Output is correct
23 Correct 1 ms 596 KB Output is correct
24 Correct 1 ms 724 KB Output is correct
25 Correct 63 ms 1668 KB Output is correct
26 Correct 1 ms 724 KB Output is correct
27 Correct 2080 ms 6132 KB Output is correct
28 Runtime error 3788 ms 262144 KB Execution killed with signal 9
29 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 482 ms 6112 KB Output is correct
2 Correct 431 ms 6220 KB Output is correct
3 Correct 560 ms 6104 KB Output is correct
4 Correct 459 ms 6108 KB Output is correct
5 Correct 476 ms 6156 KB Output is correct
6 Correct 23 ms 51796 KB Output is correct
7 Correct 24 ms 51904 KB Output is correct
8 Correct 25 ms 51868 KB Output is correct
9 Correct 57 ms 52596 KB Output is correct
10 Correct 23 ms 48012 KB Output is correct
11 Correct 24 ms 47956 KB Output is correct
12 Correct 86 ms 49564 KB Output is correct
13 Correct 22 ms 47976 KB Output is correct
14 Correct 22 ms 47928 KB Output is correct
15 Runtime error 14671 ms 262144 KB Execution killed with signal 9
16 Halted 0 ms 0 KB -