Advertisement
dimov

Untitled

Jan 3rd, 2013
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.94 KB | None | 0 0
  1. using System;
  2.  
  3. class AngryBits
  4. {
  5.     static void Main()
  6.     {
  7.         int[] grid = new int[8]; //{ 256, 0, 0, 0, 0, 0, 1, 3 };
  8.         int mask = 1;
  9.         int mask2 = 1;
  10.         int x = 0;
  11.         int y = 0;
  12.         int path = 0;
  13.         int score = 0;
  14.         int pigs = 0;
  15.         bool up = true;
  16.         bool next = false;
  17.         bool yes = true;
  18.  
  19.  
  20.         for (int i = 0; i < 8; i++)
  21.         {
  22.             grid[i] = int.Parse(Console.ReadLine());
  23.         }
  24.  
  25.         for (int i = 8; i < 16; i++)
  26.         {
  27.  
  28.             for (int j = 7; j >= 0; j--)
  29.             {
  30.                 pigs = 0;
  31.                 up = true;
  32.                 next = false;
  33.                 mask = 1;
  34.                 mask <<= i;
  35.                 mask &= grid[j];
  36.                 if (mask>0)
  37.                 {
  38.  
  39.                     mask = ~mask;
  40.                     grid[j] &= mask;
  41.                     x = i;
  42.                     y = j;
  43.  
  44.                     if (x>=0 && y>=0 && up==true && next == false)
  45.                     {
  46.                         path = 0;
  47.                         while (next == false)
  48.                         {
  49.                             x--;
  50.                             y--;
  51.                             if (x >= 0 && y >= 0)
  52.                             {
  53.  
  54.                             }
  55.                             else
  56.                             {
  57.                                 x++;
  58.                                 y++;
  59.                                 next = true;
  60.                                 up = false;
  61.                                 break;
  62.                             }
  63.                            
  64.                             mask2 = 1;
  65.                             mask2 <<= x;
  66.                             mask2 &= grid[y];
  67.                            
  68.                             if (mask2 > 0)
  69.                             {
  70.                                 pigs++;
  71.                                 path++;
  72.                                 grid[y] &= (~mask2);
  73.  
  74.                                 if ((x+1)<15 && (((mask2<<=1)&grid[y]) > 0))  // left
  75.                                 {
  76.                                     pigs++;
  77.                                     grid[y] &= (~mask2);
  78.                                 }
  79.                                 mask2 = 1;
  80.                                 mask2 <<= x;
  81.  
  82.                                 if ((x + 1) < 8 && (y - 1) >= 0 && (((mask2 <<= 1) & grid[y-1]) > 0)) //up left
  83.                                 {
  84.                                     pigs++;
  85.                                     grid[y-1] &= (~mask2);
  86.                                 }
  87.                                 mask2 = 1;
  88.                                 mask2 <<= x;
  89.  
  90.                                 if ((y - 1) >= 0 && ((mask2 & grid[y - 1]) > 0)) //up
  91.                                 {
  92.                                     pigs++;
  93.                                     grid[y - 1] &= (~mask2);
  94.                                 }
  95.                                 if ((x - 1) >= 0 && (y - 1) >= 0 && (((mask2 >>= 1) & grid[y - 1]) > 0)) //up right
  96.                                 {
  97.                                     pigs++;
  98.                                     grid[y - 1] &= (~mask2);
  99.                                    
  100.                                 }
  101.                                 mask2 = 1;
  102.                                 mask2 <<= x;
  103.  
  104.                                 if ((x - 1) >= 0 && (((mask2 >>= 1) & grid[y]) > 0)) //right
  105.                                 {
  106.                                     pigs++;
  107.                                     grid[y] &= (~mask2);
  108.                                    
  109.                                 }
  110.                                 mask2 = 1;
  111.                                 mask2 <<= x;
  112.  
  113.                                 if ((x - 1) >=0 && (y+1)<8 && (((mask2 >>= 1) & grid[y+1]) > 0)) //down right
  114.                                 {
  115.                                     pigs++;
  116.                                     grid[y+1] &= (~mask2);
  117.                                    
  118.                                 }
  119.                                 mask2 = 1;
  120.                                 mask2 <<= x;
  121.  
  122.                                 if ((y + 1) < 8 && ((mask2 & grid[y + 1]) > 0)) //down
  123.                                 {
  124.                                     pigs++;
  125.                                     grid[y + 1] &= (~mask2);
  126.                                 }
  127.  
  128.                                 score += (pigs * path);
  129.                                 next = true;
  130.                                 break;
  131.                             }
  132.                             else
  133.                             {
  134.                                 path++;
  135.                             }
  136.                             if (y==0||x==0)
  137.                             {
  138.                                 next = true;
  139.                                 up = false;
  140.                             }
  141.                         }
  142.                     }
  143.  
  144.  
  145.  
  146.                    
  147.                     //-----------------------------------------------------------
  148.                     if (next == false)
  149.                     {
  150.  
  151.                     }
  152.                     else
  153.                     {
  154.                         if (x >= 0 && y < 8 && up == false)
  155.                         {
  156.                             while (next == true)
  157.                             {
  158.                                 x--;
  159.                                 y++;
  160.                                 mask2 = 1;
  161.                                 mask2 <<= x;
  162.                                 mask2 &= grid[y];
  163.                                 if (mask2 > 0)
  164.                                 {
  165.                                     pigs++;
  166.                                     path++;
  167.                                     grid[y] &= (~mask2);
  168.                        
  169.                                     if ((y - 1) >= 0 && ((mask2 & grid[y - 1]) > 0)) //up
  170.                                     {
  171.                                         pigs++;
  172.                                         grid[y - 1] &= (~mask2);
  173.                                     }
  174.                                     if ((x - 1) >= 0 && (y - 1) >= 0 && (((mask2 >>= 1) & grid[y - 1]) > 0)) //up right
  175.                                     {
  176.                                         pigs++;
  177.                                         grid[y - 1] &= (~mask2);
  178.                                     }
  179.                                     mask2 = 1;
  180.                                     mask2 <<= x;
  181.                                     if ((x - 1) >= 0 && (((mask2 >>= 1) & grid[y]) > 0)) //right
  182.                                     {
  183.                                         pigs++;
  184.                                         grid[y] &= (~mask2);
  185.                                     }
  186.                                     mask2 = 1;
  187.                                     mask2 <<= x;
  188.                                     if ((x - 1) >= 0 && (y + 1) < 8 && (((mask2 >>= 1) & grid[y + 1]) > 0)) //down right
  189.                                     {
  190.                                         pigs++;
  191.                                         grid[y + 1] &= (~mask2);
  192.                                     }
  193.                                     mask2 = 1;
  194.                                     mask2 <<= x;
  195.                                     if ((y + 1) < 8 && ((mask2 & grid[y + 1]) > 0)) //down
  196.                                     {
  197.                                         pigs++;
  198.                                         grid[y + 1] &= (~mask2);
  199.                                     }
  200.                                     if ((x + 1) < 15 && (y+1)<8 && (((mask2 <<= 1) & grid[y+1]) > 0))  //down left
  201.                                     {
  202.                                         pigs++;
  203.                                         grid[y+1] &= (~mask2);
  204.                                         mask2 >>= 1;
  205.                                     }
  206.                                     mask2 = 1;
  207.                                     mask2 <<= x;
  208.                                     if ((x + 1) < 15 && (((mask2 <<= 1) & grid[y]) > 0))  // left
  209.                                     {
  210.                                         pigs++;
  211.                                         grid[y] &= (~mask2);
  212.                                     }
  213.                                     mask2 = 1;
  214.                                     mask2 <<= x;
  215.  
  216.                                     score += (pigs * path);
  217.                                     next = false;
  218.                                     break;
  219.  
  220.                                 }
  221.                                 else
  222.                                 {
  223.                                     path++;
  224.                                 }
  225.                                 if (x==0||y==7)
  226.                                 {
  227.                                     next = false;                                
  228.                                 }
  229.                             }
  230.                         }
  231.                     }
  232.                 }
  233.             }
  234.         }
  235.         for (int i = 0; i < 8; i++)
  236.         {
  237.             for (int j = 0; j < 8; j++)
  238.             {
  239.                 mask = 1;
  240.                 mask <<= i;
  241.                 mask &= grid[j];
  242.                 if (mask > 0)
  243.                 {
  244.                     yes = false;
  245.                 }
  246.             }
  247.         }
  248.  
  249.         Console.WriteLine("{0} {1}",score, yes ? "Yes" : "No");
  250.     }
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement