Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- const unsigned int nmax = 1000;
- unsigned int N, steps = 0;
- bool mat[nmax][nmax];
- void read()
- {
- unsigned int i, j;
- freopen("filmat.in", "rt", stdin);
- scanf("%d", &N);
- for (i = 1; i <= N; i++) {
- for (j = 1; j <= N; j++) {
- scanf("%d", &mat[i][j]);
- }
- }
- fclose(stdin);
- }
- void write()
- {
- freopen("fimat.out", "wt", stdout);
- printf("%d", steps);
- fclose(stdout);
- }
- void process()
- {
- unsigned int i, j, k, vecini;
- bool status = true;
- int dlin[] = {-1, -1, 0, 1, 1, 1, 0, -1};
- int dcol[] = {0, 1, 1, 1, 0, -1, -1, -1};
- while (status) {
- status = false;
- for (i = 1; i <= N; i++) {
- for (j = 1; j <= N; j++) {
- if (!mat[i][j]) {
- vecini = 0;
- for (k = 0; k < 8; k++) {
- if (mat[i + dlin[k]][j + dcol[k]]) {
- vecini++;
- if (vecini >= 3) {
- status = true;
- mat[i][j] = 1;
- steps++;
- break;
- }
- }
- }
- }
- }
- }
- }
- }
- int main()
- {
- read();
- process();
- write();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement