Advertisement
stanevplamen

02.09.03.02.SpecialValueQueue

Jun 21st, 2013
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.96 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. class SpecialValue
  5. {
  6.     static void SeparateNumbers(string[] allArrs)
  7.     {
  8.         string[][] numbArrInArr = new string[allArrs.Length][];
  9.         intArrInArr = new int[allArrs.Length][];
  10.         for (int i = 0; i < allArrs.Length; i++)
  11.         {
  12.             numbArrInArr[i] = allArrs[i].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
  13.             intArrInArr[i] = new int[numbArrInArr[i].Length];
  14.             for (int j = 0; j < numbArrInArr[i].Length; j++)
  15.             {
  16.                 intArrInArr[i][j] = int.Parse(numbArrInArr[i][j].Trim());
  17.             }
  18.         }
  19.     }
  20.  
  21.     static int[][] intArrInArr;
  22.  
  23.     static int counter = 1;
  24.     static int sum = 0;
  25.  
  26.     class Point
  27.     {
  28.         public int xCoordinate { get; set; }
  29.         public int yCoordinate { get; set; }
  30.  
  31.         public Point(int x, int y)
  32.         {
  33.             xCoordinate = x;
  34.             yCoordinate = y;
  35.         }
  36.     }
  37.  
  38.     static int FindNumberOfCellsBFS(Point startPoint)
  39.     {
  40.         Queue<Point> matrixPoints = new Queue<Point>();
  41.         matrixPoints.Enqueue(startPoint);
  42.  
  43.         while (true)
  44.         {
  45.  
  46.             Point currentPoint = matrixPoints.Dequeue();
  47.             if ((currentPoint.xCoordinate >= intArrInArr.Length - 1) && counter == 1)
  48.             {
  49.                 currentPoint.xCoordinate = 0;
  50.             }
  51.             int lastNumber = intArrInArr[currentPoint.xCoordinate][currentPoint.yCoordinate];
  52.             counter++;
  53.             sum = counter + Math.Abs(lastNumber);
  54.             if (intArrInArr[currentPoint.xCoordinate][currentPoint.yCoordinate] < 0)
  55.             {
  56.                 //intArrInArr[currentArr][currentIndex] = int.MaxValue;
  57.                 counter = 0;
  58.                 break;
  59.             }
  60.             if (intArrInArr[currentPoint.xCoordinate][currentPoint.yCoordinate] == int.MaxValue)
  61.             {
  62.                 counter = 0;
  63.                 break;
  64.             }
  65.             if (intArrInArr[currentPoint.xCoordinate][currentPoint.yCoordinate] >= 0)
  66.             {
  67.                 int tempIndex = currentPoint.yCoordinate;
  68.                 //intArrInArr[currentPoint.xCoordinate][currentPoint.yCoordinate] = int.MaxValue;
  69.                 currentPoint.yCoordinate = intArrInArr[currentPoint.xCoordinate][currentPoint.yCoordinate];
  70.                 if (currentPoint.xCoordinate >= intArrInArr.Length - 1)
  71.                 {
  72.                     currentPoint.xCoordinate = -1;
  73.                 }
  74.                 matrixPoints.Enqueue(new Point(currentPoint.xCoordinate + 1, currentPoint.yCoordinate));
  75.             }
  76.         }
  77.         return sum;
  78.  
  79.     }
  80.  
  81.  
  82.     static void Main()
  83.     {
  84.         string input = Console.ReadLine(); //"6"; //
  85.         int length = int.Parse(input);
  86.  
  87.         string[] allArrs = new string[length];
  88.  
  89.         for (int i = 0; i < allArrs.Length; i++)
  90.         {
  91.             allArrs[i] = Console.ReadLine();
  92.         }
  93.         //allArrs[0] = "6, 7, -6, 6";
  94.         //allArrs[1] = "-4, -2, 1, 4, 4, 4, -1, 3, 1";
  95.         //allArrs[2] = "3, -7, 2, 4, 2";
  96.         //allArrs[3] = "-3, -3, 0, 3, 0, 1, -1, 2, 2";
  97.  
  98.         SeparateNumbers(allArrs);
  99.         int sum = 0;
  100.         int maxSum = 0;
  101.         for (int j = 0; j < intArrInArr[0].Length; j++)
  102.         {
  103.             counter = 1;
  104.             if (intArrInArr[0][j] < 0)
  105.             {
  106.                 sum = counter + Math.Abs(intArrInArr[0][j]);
  107.             }
  108.             else if (intArrInArr[0][j] == int.MaxValue)
  109.             {
  110.                 continue;
  111.             }
  112.  
  113.             else if (intArrInArr[0][j] >= 0)
  114.             {
  115.                 Point startPoint = new Point(0 + 1, intArrInArr[0][j]);
  116.                 sum = FindNumberOfCellsBFS(startPoint);
  117.                 //sum = FindNumberOfCellsBFS(0 + 1, intArrInArr[0][j]);
  118.             }
  119.  
  120.             if (maxSum < sum)
  121.             {
  122.                 maxSum = sum;
  123.             }
  124.         }
  125.         Console.WriteLine(maxSum);
  126.     }
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement