답안 #1095095

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1095095 2024-10-01T09:02:17 Z dosts 웜뱃 (IOI13_wombats) C++17
76 / 100
20000 ms 64044 KB
//Dost SEFEROĞLU
#include <bits/stdc++.h>
#include "wombats.h"
//#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
using namespace std;
//#define int long long
#define pii pair<int,int>
#define ff first
#define ss second
#define sp << " " <<    
#define all(cont) cont.begin(),cont.end()
#define vi vector<int>
const int MOD = 1e9+7,inf = 2e9;
const int Q = 2e5+50,B = 100;
int N,c;
using Matrix = int[201][201];
int sag[5000][200],as[5000][2000];

Matrix d;

void man(int l,int r) {
    for (int i=0;i<c;i++) for (int j=0;j<c;j++) d[i][j] = inf;
    for (int i=0;i<c;i++) {
        d[i][i] = 0;
        for (int j=i+1;j<c;j++) d[i][j] = d[j][i] = d[i][j-1]+sag[l-1][j-1];
    }
    for (int p=l+1;p<=r;p++) {
        for (int s = 0;s<c;s++) {
            for (int j=0;j<c;j++) {
                d[s][j] = d[s][j]+as[p-2][j];
                if (j) d[s][j] = min(d[s][j],d[s][j-1]+sag[p-1][j-1]);
            }
            for (int j=c-2;j>=0;j--){
                d[s][j] = min(d[s][j],d[s][j+1]+sag[p-1][j]);
            }
        }
    } 
}

struct ST {
    Matrix dp[1000];

    void build(int node,int l,int r) {
        if (l+B-1 >= r) {
            //BC^2
            man(l,r);
            for (int i=0;i<c;i++) {
                for (int j=0;j<c;j++) dp[node][i][j] = d[i][j];
            }
            return;
        }
        int m = (l+r) >> 1;
        build(2*node,l,m);
        build(2*node+1,m+1,r);
        for (int i=0;i<c;i++) {
            for (int j=0;j<c;j++) {
                dp[node][i][j] = inf;
                for (int k=0;k<c;k++) {
                    dp[node][i][j] = min(dp[node][i][j],
                    dp[2*node][i][k]+dp[2*node+1][k][j]+as[m-1][k]);
                }
            }
        }
    }

    void update(int node,int l,int r,int p) {
        if (l+B-1 >= r) {
            //BC^2
            man(l,r);
            for (int i=0;i<c;i++) {
                for (int j=0;j<c;j++) dp[node][i][j] = d[i][j];
            }
            return;
        }
        int m = (l+r) >> 1;
        if  (p<=m) update(2*node,l,m,p);
        else update(2*node+1,m+1,r,p);
        for (int i=0;i<c;i++) {
            for (int j=0;j<c;j++) {
                dp[node][i][j] = inf;
                for (int k=0;k<c;k++) {
                    dp[node][i][j] = min(dp[node][i][j],
                    dp[2*node][i][k]+dp[2*node+1][k][j]+as[m-1][k]);
                }
            }
        }   
    }
} st;

void init(int32_t R, int32_t C, int32_t H[5000][200], int32_t V[5000][200]) {
    N = R,c = C;
    for (int i=0;i<N;i++) {
        for (int j=0;j<c-1;j++) sag[i][j] = H[i][j];
        if (i<N-1) for (int j=0;j<c;j++) as[i][j] = V[i][j];
    };
    st.build(1,1,N);
}

void changeH(int32_t P, int32_t Q, int32_t W) {
    sag[P][Q] = W;
    st.update(1,1,N,P+1);
}

void changeV(int32_t P, int32_t Q, int32_t W) {
    as[P][Q] = W;
    st.update(1,1,N,P+1);
}

int32_t escape(int32_t V1, int32_t V2) {
    return st.dp[1][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;
      |      ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 10 ms 24932 KB Output is correct
2 Correct 11 ms 24924 KB Output is correct
3 Correct 58 ms 27688 KB Output is correct
4 Correct 10 ms 24920 KB Output is correct
5 Correct 10 ms 24940 KB Output is correct
6 Correct 1 ms 344 KB Output is correct
7 Correct 0 ms 440 KB Output is correct
8 Correct 1 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 604 KB Output is correct
5 Correct 0 ms 604 KB Output is correct
6 Correct 1 ms 604 KB Output is correct
7 Correct 1 ms 604 KB Output is correct
8 Correct 1 ms 604 KB Output is correct
9 Correct 1 ms 604 KB Output is correct
10 Correct 0 ms 604 KB Output is correct
11 Correct 41 ms 2828 KB Output is correct
12 Correct 1 ms 604 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 553 ms 1356 KB Output is correct
2 Correct 541 ms 1344 KB Output is correct
3 Correct 561 ms 1372 KB Output is correct
4 Correct 556 ms 1372 KB Output is correct
5 Correct 547 ms 1372 KB Output is correct
6 Correct 1 ms 344 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 2750 ms 1364 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 32864 KB Output is correct
2 Correct 13 ms 32856 KB Output is correct
3 Correct 13 ms 32876 KB Output is correct
4 Correct 32 ms 34132 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 551 ms 1372 KB Output is correct
2 Correct 543 ms 1344 KB Output is correct
3 Correct 555 ms 1368 KB Output is correct
4 Correct 562 ms 1372 KB Output is correct
5 Correct 547 ms 1368 KB Output is correct
6 Correct 15 ms 32860 KB Output is correct
7 Correct 15 ms 32860 KB Output is correct
8 Correct 15 ms 32952 KB Output is correct
9 Correct 35 ms 34204 KB Output is correct
10 Correct 9 ms 24920 KB Output is correct
11 Correct 11 ms 24924 KB Output is correct
12 Correct 48 ms 27712 KB Output is correct
13 Correct 10 ms 24920 KB Output is correct
14 Correct 10 ms 24920 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 0 ms 444 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 1 ms 604 KB Output is correct
19 Correct 1 ms 604 KB Output is correct
20 Correct 0 ms 604 KB Output is correct
21 Correct 0 ms 604 KB Output is correct
22 Correct 1 ms 604 KB Output is correct
23 Correct 1 ms 604 KB Output is correct
24 Correct 1 ms 604 KB Output is correct
25 Correct 48 ms 2932 KB Output is correct
26 Correct 1 ms 600 KB Output is correct
27 Correct 2752 ms 1368 KB Output is correct
28 Correct 4852 ms 47900 KB Output is correct
29 Correct 4521 ms 41968 KB Output is correct
30 Correct 4465 ms 41928 KB Output is correct
31 Correct 5020 ms 49780 KB Output is correct
32 Correct 0 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 552 ms 1368 KB Output is correct
2 Correct 543 ms 1116 KB Output is correct
3 Correct 560 ms 1368 KB Output is correct
4 Correct 556 ms 1368 KB Output is correct
5 Correct 545 ms 1372 KB Output is correct
6 Correct 15 ms 32856 KB Output is correct
7 Correct 13 ms 32792 KB Output is correct
8 Correct 14 ms 32872 KB Output is correct
9 Correct 33 ms 34120 KB Output is correct
10 Correct 10 ms 24872 KB Output is correct
11 Correct 11 ms 24924 KB Output is correct
12 Correct 61 ms 27728 KB Output is correct
13 Correct 9 ms 24924 KB Output is correct
14 Correct 9 ms 24772 KB Output is correct
15 Correct 1860 ms 63760 KB Output is correct
16 Execution timed out 20040 ms 64044 KB Time limit exceeded
17 Halted 0 ms 0 KB -