Submission #5941

# Submission time Handle Problem Language Result Execution time Memory
5941 2014-05-31T14:48:13 Z baneling100 일도양단! (kriii1_1) C++
1 / 1
0 ms 3140 KB
#include <stdio.h>
#include <algorithm>

using namespace std;

int R, C, H, N, A[8][8][8][8][8][8], D[8][8][8][8][8][8];

void input(void)
{
    int i, j, k, l, m, n, o, r, c, h;

    scanf("%d %d %d %d",&R,&C,&H,&N);
    for(i=1 ; i<=R ; i++)
        for(j=1 ; j<=C ; j++)
            for(k=1 ; k<=H ; k++)
                for(l=i ; l<=R ; l++)
                    for(m=j ; m<=C ; m++)
                        for(n=k ; n<=H ; n++)
                            A[i][l][j][m][k][n]=D[i][l][j][m][k][n]=-1;
    for(i=1 ; i<=N ; i++)
    {
        scanf("%d %d %d",&r,&c,&h);
        A[r][r][c][c][h][h]=1;
    }
}

void makeA(int lr, int rr, int lc, int rc, int lh, int rh)
{
    int i;

    for(i=lr ; i<=rr-1 ; i++)
    {
        if(A[lr][i][lc][rc][lh][rh]==-1)
            makeA(lr,i,lc,rc,lh,rh);
        if(A[i+1][rr][lc][rc][lh][rh]==-1)
            makeA(i+1,rr,lc,rc,lh,rh);
        if(A[lr][rr][lc][rc][lh][rh]<A[lr][i][lc][rc][lh][rh]+A[i+1][rr][lc][rc][lh][rh])
            A[lr][rr][lc][rc][lh][rh]=A[lr][i][lc][rc][lh][rh]+A[i+1][rr][lc][rc][lh][rh];
    }
    for(i=lc ; i<=rc-1 ; i++)
    {
        if(A[lr][rr][lc][i][lh][rh]==-1)
            makeA(lr,rr,lc,i,lh,rh);
        if(A[lr][rr][i+1][rc][lh][rh]==-1)
            makeA(lr,rr,i+1,rc,lh,rh);
        if(A[lr][rr][lc][rc][lh][rh]<A[lr][rr][lc][i][lh][rh]+A[lr][rr][i+1][rc][lh][rh])
            A[lr][rr][lc][rc][lh][rh]=A[lr][rr][lc][i][lh][rh]+A[lr][rr][i+1][rc][lh][rh];
    }
    for(i=lh ; i<=rh-1 ; i++)
    {
        if(A[lr][rr][lc][rc][lh][i]==-1)
            makeA(lr,rr,lc,rc,lh,i);
        if(A[lr][rr][lc][rc][i+1][rh]==-1)
            makeA(lr,rr,lc,rc,i+1,rh);
        if(A[lr][rr][lc][rc][lh][rh]<A[lr][rr][lc][rc][lh][i]+A[lr][rr][lc][rc][i+1][rh])
            A[lr][rr][lc][rc][lh][rh]=A[lr][rr][lc][rc][lh][i]+A[lr][rr][lc][rc][i+1][rh];
    }
    if(A[lr][rr][lc][rc][lh][rh]==-1)
        A[lr][rr][lc][rc][lh][rh]=0;
}

void init(void)
{
    int i, j, k, l, m, n;

    for(i=1 ; i<=R ; i++)
        for(j=1 ; j<=C ; j++)
            for(k=1 ; k<=H ; k++)
                for(l=i ; l<=R ; l++)
                    for(m=j ; m<=C ; m++)
                        for(n=k ; n<=H ; n++)
                            if(A[i][l][j][m][k][n]<=1)
                                D[i][l][j][m][k][n]=(l-i+1)*(m-j+1)*(n-k+1);
}

void process(int lr, int rr, int lc, int rc, int lh, int rh)
{
    int i;

    for(i=lr ; i<=rr-1 ; i++)
    {
        if(D[lr][i][lc][rc][lh][rh]==-1)
            process(lr,i,lc,rc,lh,rh);
        if(D[i+1][rr][lc][rc][lh][rh]==-1)
            process(i+1,rr,lc,rc,lh,rh);
        if(D[lr][rr][lc][rc][lh][rh]<min(D[lr][i][lc][rc][lh][rh],D[i+1][rr][lc][rc][lh][rh]))
            D[lr][rr][lc][rc][lh][rh]=min(D[lr][i][lc][rc][lh][rh],D[i+1][rr][lc][rc][lh][rh]);
    }
    for(i=lc ; i<=rc-1 ; i++)
    {
        if(D[lr][rr][lc][i][lh][rh]==-1)
            process(lr,rr,lc,i,lh,rh);
        if(D[lr][rr][i+1][rc][lh][rh]==-1)
            process(lr,rr,i+1,rc,lh,rh);
        if(D[lr][rr][lc][rc][lh][rh]<min(D[lr][rr][lc][i][lh][rh],D[lr][rr][i+1][rc][lh][rh]))
            D[lr][rr][lc][rc][lh][rh]=min(D[lr][rr][lc][i][lh][rh],D[lr][rr][i+1][rc][lh][rh]);
    }
    for(i=lh ; i<=rh-1 ; i++)
    {
        if(D[lr][rr][lc][rc][lh][i]==-1)
            process(lr,rr,lc,rc,lh,i);
        if(D[lr][rr][lc][rc][i+1][rh]==-1)
            process(lr,rr,lc,rc,i+1,rh);
        if(D[lr][rr][lc][rc][lh][rh]<min(D[lr][rr][lc][rc][lh][i],D[lr][rr][lc][rc][i+1][rh]))
            D[lr][rr][lc][rc][lh][rh]=min(D[lr][rr][lc][rc][lh][i],D[lr][rr][lc][rc][i+1][rh]);
    }
}

void output(void)
{
    printf("%d",D[1][R][1][C][1][H]);
}

int main(void)
{
    input();
    makeA(1,R,1,C,1,H);
    init();
    process(1,R,1,C,1,H);
    output();

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 3140 KB Output is correct
2 Correct 0 ms 3140 KB Output is correct
3 Correct 0 ms 3140 KB Output is correct
4 Correct 0 ms 3140 KB Output is correct
5 Correct 0 ms 3140 KB Output is correct
6 Correct 0 ms 3140 KB Output is correct
7 Correct 0 ms 3140 KB Output is correct
8 Correct 0 ms 3140 KB Output is correct
9 Correct 0 ms 3140 KB Output is correct
10 Correct 0 ms 3140 KB Output is correct
11 Correct 0 ms 3140 KB Output is correct
12 Correct 0 ms 3140 KB Output is correct
13 Correct 0 ms 3140 KB Output is correct
14 Correct 0 ms 3140 KB Output is correct
15 Correct 0 ms 3140 KB Output is correct
16 Correct 0 ms 3140 KB Output is correct
17 Correct 0 ms 3140 KB Output is correct
18 Correct 0 ms 3140 KB Output is correct
19 Correct 0 ms 3140 KB Output is correct
20 Correct 0 ms 3140 KB Output is correct
21 Correct 0 ms 3140 KB Output is correct
22 Correct 0 ms 3140 KB Output is correct
23 Correct 0 ms 3140 KB Output is correct
24 Correct 0 ms 3140 KB Output is correct
25 Correct 0 ms 3140 KB Output is correct
26 Correct 0 ms 3140 KB Output is correct
27 Correct 0 ms 3140 KB Output is correct
28 Correct 0 ms 3140 KB Output is correct
29 Correct 0 ms 3140 KB Output is correct
30 Correct 0 ms 3140 KB Output is correct
31 Correct 0 ms 3140 KB Output is correct
32 Correct 0 ms 3140 KB Output is correct
33 Correct 0 ms 3140 KB Output is correct
34 Correct 0 ms 3140 KB Output is correct
35 Correct 0 ms 3140 KB Output is correct
36 Correct 0 ms 3140 KB Output is correct
37 Correct 0 ms 3140 KB Output is correct
38 Correct 0 ms 3140 KB Output is correct
39 Correct 0 ms 3140 KB Output is correct
40 Correct 0 ms 3140 KB Output is correct
41 Correct 0 ms 3140 KB Output is correct
42 Correct 0 ms 3140 KB Output is correct
43 Correct 0 ms 3140 KB Output is correct
44 Correct 0 ms 3140 KB Output is correct
45 Correct 0 ms 3140 KB Output is correct
46 Correct 0 ms 3140 KB Output is correct
47 Correct 0 ms 3140 KB Output is correct
48 Correct 0 ms 3140 KB Output is correct
49 Correct 0 ms 3140 KB Output is correct
50 Correct 0 ms 3140 KB Output is correct
51 Correct 0 ms 3140 KB Output is correct
52 Correct 0 ms 3140 KB Output is correct
53 Correct 0 ms 3140 KB Output is correct
54 Correct 0 ms 3140 KB Output is correct
55 Correct 0 ms 3140 KB Output is correct
56 Correct 0 ms 3140 KB Output is correct
57 Correct 0 ms 3140 KB Output is correct
58 Correct 0 ms 3140 KB Output is correct
59 Correct 0 ms 3140 KB Output is correct
60 Correct 0 ms 3140 KB Output is correct
61 Correct 0 ms 3140 KB Output is correct
62 Correct 0 ms 3140 KB Output is correct
63 Correct 0 ms 3140 KB Output is correct
64 Correct 0 ms 3140 KB Output is correct
65 Correct 0 ms 3140 KB Output is correct
66 Correct 0 ms 3140 KB Output is correct
67 Correct 0 ms 3140 KB Output is correct
68 Correct 0 ms 3140 KB Output is correct
69 Correct 0 ms 3140 KB Output is correct
70 Correct 0 ms 3140 KB Output is correct
71 Correct 0 ms 3140 KB Output is correct
72 Correct 0 ms 3140 KB Output is correct
73 Correct 0 ms 3140 KB Output is correct
74 Correct 0 ms 3140 KB Output is correct
75 Correct 0 ms 3140 KB Output is correct
76 Correct 0 ms 3140 KB Output is correct
77 Correct 0 ms 3140 KB Output is correct
78 Correct 0 ms 3140 KB Output is correct
79 Correct 0 ms 3140 KB Output is correct
80 Correct 0 ms 3140 KB Output is correct
81 Correct 0 ms 3140 KB Output is correct
82 Correct 0 ms 3140 KB Output is correct
83 Correct 0 ms 3140 KB Output is correct
84 Correct 0 ms 3140 KB Output is correct
85 Correct 0 ms 3140 KB Output is correct
86 Correct 0 ms 3140 KB Output is correct
87 Correct 0 ms 3140 KB Output is correct
88 Correct 0 ms 3140 KB Output is correct
89 Correct 0 ms 3140 KB Output is correct
90 Correct 0 ms 3140 KB Output is correct
91 Correct 0 ms 3140 KB Output is correct
92 Correct 0 ms 3140 KB Output is correct
93 Correct 0 ms 3140 KB Output is correct
94 Correct 0 ms 3140 KB Output is correct
95 Correct 0 ms 3140 KB Output is correct
96 Correct 0 ms 3140 KB Output is correct
97 Correct 0 ms 3140 KB Output is correct
98 Correct 0 ms 3140 KB Output is correct
99 Correct 0 ms 3140 KB Output is correct
100 Correct 0 ms 3140 KB Output is correct