Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- class AngryBits
- {
- static void Main()
- {
- int[] grid = new int[8]; //{ 256, 0, 0, 0, 0, 0, 1, 3 };
- int mask = 1;
- int mask2 = 1;
- int x = 0;
- int y = 0;
- int path = 0;
- int score = 0;
- int pigs = 0;
- bool up = true;
- bool next = false;
- bool yes = true;
- for (int i = 0; i < 8; i++)
- {
- grid[i] = int.Parse(Console.ReadLine());
- }
- for (int i = 8; i < 16; i++)
- {
- for (int j = 7; j >= 0; j--)
- {
- pigs = 0;
- up = true;
- next = false;
- mask = 1;
- mask <<= i;
- mask &= grid[j];
- if (mask>0)
- {
- mask = ~mask;
- grid[j] &= mask;
- x = i;
- y = j;
- if (x>=0 && y>=0 && up==true && next == false)
- {
- path = 0;
- while (next == false)
- {
- x--;
- y--;
- if (x >= 0 && y >= 0)
- {
- }
- else
- {
- x++;
- y++;
- next = true;
- up = false;
- break;
- }
- mask2 = 1;
- mask2 <<= x;
- mask2 &= grid[y];
- if (mask2 > 0)
- {
- pigs++;
- path++;
- grid[y] &= (~mask2);
- if ((x+1)<15 && (((mask2<<=1)&grid[y]) > 0)) // left
- {
- pigs++;
- grid[y] &= (~mask2);
- }
- mask2 = 1;
- mask2 <<= x;
- if ((x + 1) < 8 && (y - 1) >= 0 && (((mask2 <<= 1) & grid[y-1]) > 0)) //up left
- {
- pigs++;
- grid[y-1] &= (~mask2);
- }
- mask2 = 1;
- mask2 <<= x;
- if ((y - 1) >= 0 && ((mask2 & grid[y - 1]) > 0)) //up
- {
- pigs++;
- grid[y - 1] &= (~mask2);
- }
- if ((x - 1) >= 0 && (y - 1) >= 0 && (((mask2 >>= 1) & grid[y - 1]) > 0)) //up right
- {
- pigs++;
- grid[y - 1] &= (~mask2);
- }
- mask2 = 1;
- mask2 <<= x;
- if ((x - 1) >= 0 && (((mask2 >>= 1) & grid[y]) > 0)) //right
- {
- pigs++;
- grid[y] &= (~mask2);
- }
- mask2 = 1;
- mask2 <<= x;
- if ((x - 1) >=0 && (y+1)<8 && (((mask2 >>= 1) & grid[y+1]) > 0)) //down right
- {
- pigs++;
- grid[y+1] &= (~mask2);
- }
- mask2 = 1;
- mask2 <<= x;
- if ((y + 1) < 8 && ((mask2 & grid[y + 1]) > 0)) //down
- {
- pigs++;
- grid[y + 1] &= (~mask2);
- }
- score += (pigs * path);
- next = true;
- break;
- }
- else
- {
- path++;
- }
- if (y==0||x==0)
- {
- next = true;
- up = false;
- }
- }
- }
- //-----------------------------------------------------------
- if (next == false)
- {
- }
- else
- {
- if (x >= 0 && y < 8 && up == false)
- {
- while (next == true)
- {
- x--;
- y++;
- mask2 = 1;
- mask2 <<= x;
- mask2 &= grid[y];
- if (mask2 > 0)
- {
- pigs++;
- path++;
- grid[y] &= (~mask2);
- if ((y - 1) >= 0 && ((mask2 & grid[y - 1]) > 0)) //up
- {
- pigs++;
- grid[y - 1] &= (~mask2);
- }
- if ((x - 1) >= 0 && (y - 1) >= 0 && (((mask2 >>= 1) & grid[y - 1]) > 0)) //up right
- {
- pigs++;
- grid[y - 1] &= (~mask2);
- }
- mask2 = 1;
- mask2 <<= x;
- if ((x - 1) >= 0 && (((mask2 >>= 1) & grid[y]) > 0)) //right
- {
- pigs++;
- grid[y] &= (~mask2);
- }
- mask2 = 1;
- mask2 <<= x;
- if ((x - 1) >= 0 && (y + 1) < 8 && (((mask2 >>= 1) & grid[y + 1]) > 0)) //down right
- {
- pigs++;
- grid[y + 1] &= (~mask2);
- }
- mask2 = 1;
- mask2 <<= x;
- if ((y + 1) < 8 && ((mask2 & grid[y + 1]) > 0)) //down
- {
- pigs++;
- grid[y + 1] &= (~mask2);
- }
- if ((x + 1) < 15 && (y+1)<8 && (((mask2 <<= 1) & grid[y+1]) > 0)) //down left
- {
- pigs++;
- grid[y+1] &= (~mask2);
- mask2 >>= 1;
- }
- mask2 = 1;
- mask2 <<= x;
- if ((x + 1) < 15 && (((mask2 <<= 1) & grid[y]) > 0)) // left
- {
- pigs++;
- grid[y] &= (~mask2);
- }
- mask2 = 1;
- mask2 <<= x;
- score += (pigs * path);
- next = false;
- break;
- }
- else
- {
- path++;
- }
- if (x==0||y==7)
- {
- next = false;
- }
- }
- }
- }
- }
- }
- }
- for (int i = 0; i < 8; i++)
- {
- for (int j = 0; j < 8; j++)
- {
- mask = 1;
- mask <<= i;
- mask &= grid[j];
- if (mask > 0)
- {
- yes = false;
- }
- }
- }
- Console.WriteLine("{0} {1}",score, yes ? "Yes" : "No");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement