language: Pike (pike 7.6.86)
date: 253 days 0 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
    import Stdio;
    
    int policz (array(string) tab, int a, int b, int c) {
        tab[a][b]='0';
        if (a<9 && b>0 && tab[a+1][b-1]=='*') return -1000;
        if (a<9 && b<9 && tab[a+1][b+1]=='*') return -1000;
        if (c==0 && a<9 && tab[a+1][b]=='*') return -1000;
        if (c==1 && b<9 && tab[a][b+1]=='*') return -1000;
        if (c==-1 && a<9 && tab[a+1][b]=='*' && b<9 && tab[a][b+1]=='*') return -1000;
        if (c==0 && (b==9 || tab[a][b+1]=='0')) return 1;
        if (c==1 && (a==9 || tab[a+1][b]=='0')) return 1;
        if (c==-1 && (b==9 || tab[a][b+1]=='0') && (a==9 || tab[a+1][b]=='0')) return 1;
        if (c==0) return 1 + policz(tab,a,b+1,0);
        if (c==1) return 1 + policz(tab,a+1,b,1);
        if (c==-1) {
                if (b<9 && tab[a][b+1]=='*') return 1 + policz(tab,a,b+1,0);
                if (a<9 && tab[a+1][b]=='*') return 1 + policz(tab,a+1,b,1);
        }
    }
    
    int jedz (array(string) tab, array(int) bat) {
        int i,j,k;
        for (i=0;i<10;i++) for (j=0;j<10;j++) if (tab[i][j]=='*') {
                k = policz(tab,i,j,-1);
                if (k<0 || k>4) return 0;
                bat[k-1]--;
        }
        for (i=0;i<4;i++) if (bat[i]!=0) return 0;
        return 1;
    }
    
    int main()
    {
            array(string) tab = ({});
            array(int) bat = ({0,0,0,0});
            int n,i,j;
            string s;
            sscanf(stdin->gets(), "%d", n);
            for (i=0;i<n;i++) {
                for (j=0;j<10;j++) {
                        sscanf(stdin->gets(), "%s", s);
                        tab = tab + ({s});
                }
                if (i!=n-1) sscanf(stdin->gets(), "%s", s);
                bat[0]=4; bat[1]=3; bat[2]=2; bat[3]=1;
                if (jedz(tab,bat) == 1) write("YES\n"); else write("NO\n");
                for (j=0;j<10;j++) write("%s\n",tab[j]); write("\n");
                tab = ({});
            }
       return 0;
    }
  • upload with new input
  • result: Success     time: 0.14s    memory: 10200 kB     returned value: 0

    2
    ****000000
    0000000000
    ***00***00
    0000000000
    00000000**
    000**00000
    00000000**
    000*000000
    00000*00*0
    0*00000000
    
    ****000000
    0000000000
    ***00***00
    0000000000
    00000000**
    000**00000
    00000000**
    0000*00000
    00000*00*0
    0*00000000
    YES
    0000000000
    0000000000
    0000000000
    0000000000
    0000000000
    0000000000
    0000000000
    0000000000
    0000000000
    0000000000
    
    NO
    0000000000
    0000000000
    0000000000
    0000000000
    0000000000
    0000000000
    0000000000
    0000000000
    00000*00*0
    0*00000000