EX09 - Kamino Factory
Някой добър човечец дали знае какъв е инпута на тестчета 6 и 9? Нищо не се троши, всичките ми подмолни проби вадят коректни резултати, но тестовете са си Х-ове :)
Пускам и код...аа мазаляка, който можех и по-човешки да се напиша, с методи и прочее, но просто искам да ми се маха от главата тая задача :D
using System;
using System.Linq;
namespace EX09_Kamino_Factory
{
    class BestSample
    {
        static void Main()
        {
            int N = int.Parse(Console.ReadLine());
            int arrSize = 20;
            string input = null;
            int sampleCounter = 0;
            string[] sampleSaver = new string[arrSize];
            //Sorting the inputs:
            while (input != "Clone them!")
            {
                input = Console.ReadLine();
                sampleSaver[sampleCounter] = input;
                sampleCounter++;
            }
            //Creating numbers array
            int[,] onlyNumbers = new int[sampleCounter - 1, N];
            for (int i = 0; i < sampleCounter - 1; i++)
            {
                input = sampleSaver[i].Replace("!", string.Empty);
                int[] arr = input.ToArray().Select(x => int.Parse(x.ToString())).ToArray();
                for (int j = 0; j < N; j++)
                {
                    onlyNumbers[i, j] = arr[j];
                }
            }
            //Parsing and calculating
            int longestTemp = 0;
            int longest = 0;
int highestSum = 0;
            int earliestIndex = int.MaxValue;
            int index = 0;
int sample = 0;
            bool isFirst = true;
            bool sumNeeded = false;
            string sampleToPrint = null;
            string printed = null;
            for (int i = 0; i < sampleCounter - 1; i++)
            {
                for (int j = 0; j < N; j++)
                {
                    if (onlyNumbers[i, j] == 1)
                    {
                        longestTemp++;
                        if (longestTemp == 2 && isFirst)
                        {
                            index = j - 1;
                            isFirst = false;
                        }
                        if (longestTemp > longest)
                        {
                            longest = longestTemp;
                            for (int k = 0; k < N; k++)
                            {
                                if (k != N - 1)
                                {
                                    sampleToPrint += onlyNumbers[i, k].ToString() + " ";
                                }
                                else
                                {
                                    sampleToPrint += onlyNumbers[i, k].ToString();
                                }
                            }
                            printed = sampleToPrint;
                            sampleToPrint = null;
                            sample = i + 1;
                            sumNeeded = false;
                            highestSum = 0;
                            earliestIndex = index;
                        }
                        else if (longestTemp == longest)
                        {
                            if (index < earliestIndex && longestTemp > 1)
                            {
                                earliestIndex = index;
                                for (int k = 0; k < N; k++)
                                {
                                    if (k != N - 1)
                                    {
                                        sampleToPrint += onlyNumbers[i, k].ToString() + " ";
                                    }
                                    else
                                    {
                                        sampleToPrint += onlyNumbers[i, k].ToString();
                                    }
                                }
                                printed = sampleToPrint;
                                sampleToPrint = null;
                                sample = i + 1;
                            }
                            else if (index == earliestIndex)
                            {
                                int lastPeakSum = 0;
                                for (int k = 0; k < N; k++)
                                {
                                    lastPeakSum += onlyNumbers[sample - 1, k];
                                }
                                int currentPeakSum = 0;
                                for (int k = 0; k < N; k++)
                                {
                                    currentPeakSum += onlyNumbers[i, k];
                                }
                                if (currentPeakSum > lastPeakSum)
                                {
                                    highestSum = currentPeakSum;
                                    for (int k = 0; k < N; k++)
                                    {
                                        if (k != N - 1)
                                        {
                                            sampleToPrint += onlyNumbers[i, k].ToString() + " ";
                                        }
                                        else
                                        {
                                            sampleToPrint += onlyNumbers[i, k].ToString();
                                        }
                                    }
                                    printed = sampleToPrint;
                                    sampleToPrint = null;
                                    sample = i + 1;
                                }
                                else
                                {
                                    highestSum = lastPeakSum;
                                }
                                sumNeeded = true;
                            }
                        }
                    }
                    else
                    {
                        longestTemp = 0;
                    }
                }
                longestTemp = 0;
                isFirst = true;
            }
            //Printing
            if (printed == null)
            {
                for (int k = 0; k < N; k++)
                {
                    if (k != N - 1)
                    {
                        sampleToPrint += onlyNumbers[0, k].ToString() + " ";
                    }
                    else
                    {
                        sampleToPrint += onlyNumbers[0, k].ToString();
                    }
                }
                printed = sampleToPrint;
                sample = 1;
            }
            if (sumNeeded)
            {
                Console.WriteLine($"Best DNA sample {sample} with sum: {highestSum}.");
                Console.WriteLine(printed);
            }
            else
            {
                Console.WriteLine($"Best DNA sample {sample} with sum: {longest}.");
                Console.WriteLine(printed);
            }
        }
    }
}