summaryrefslogtreecommitdiff
path: root/amazing/backup
blob: 2ffcb12bb0aac6c142b15974cb61dfa6382d1c5f (plain)
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <iostream>
#include <string>
#include <vector>
using namespace std;
/*
rows
j 0 1 2 3 4
i
0 <0 1 0 1 0>
1 <0 1 0 1 0>
2 <0 0 0 0 0>
 */
// struct sq{
//     sq* N;
//     sq* S;
//     sq* E;
//     sq* W;
//     int count;
// };


char turn_left(char);
char turn_right(char);

int main(){
    int b, w, count[100][100]={0};
    vector<char> sq[100];
    string s;

    cin>>b>>w;
    while(b>0){
	for(int i=0;i<b;i++){
	    cin>>s;
	    for(int j=0;j<w;j++)
		sq[i];
	}
	
	int j = 0, i=b-1;
	int wallj = 0, walli=b;
	char dir='E';
	bool returned=false;
	
	while(!returned){
	    count[i][j]++;
	    
	    if(sq[walli][wallj]==0)
		dir = turn_right(dir);
	    
	    if(dir=='E'){
		if(j+1<w && sq[i][j+1]=='0'){
		    j++;
		    wallj++;
		}
		else
		    dir = turn_left(dir);
	    }
	    else if(dir=='N'){
		if(i-1>=0 && sq[i-1][j]=='0'){
		    i--;
		    walli--;
		}
		else
		    dir = turn_left(dir);
	    }
	    else if(dir=='W'){
		if(j-1>=0 && sq[i][j-1]=='0'){
		    j--;
		    wallj--;
		}
		else
		    dir = turn_left(dir);
	    }
	    else if(dir=='S'){
		if(i+1<b && sq[i+1][j]=='0'){
		    i++;
		    walli++;
		}
		else
		    dir = turn_left(dir);
	    }
	    
	    if(i==b-1 && j==0)
		returned = true;
	}

	int visited[5]={0};
	for(int i=0; i<b; i++){
	    for(int j=0; j<w; j++){
		if(count[i][j]>4)
		    continue;
		else if(sq[i][j]=='0')
		    visited[count[i][j]]++;
	    }
	}
	for(int k=0; k<5; k++)
	    cout<<visited[k]<<" ";
	cout<<endl;
	cin>>b>>w;
    }
}

char turn_left(char dir){
    char new_dir;
    if(dir=='E')
	new_dir = 'N';
    else if(dir=='N')
	new_dir = 'W';
    else if(dir=='W')
	new_dir = 'S';
    else if(dir == 'S')
	new_dir = 'E';
    return new_dir;
}

char turn_right(char dir){
    char new_dir;
    if(dir=='E')
	new_dir = 'S';
    else if(dir=='N')
	new_dir = 'E';
    else if(dir=='W')
	new_dir = 'N';
    else if(dir == 'S')
	new_dir = 'W';
    return new_dir;    
}