Untitled
string ObliczKorki(InputRecord input) { var pokoje = input.konfiguracjaPokoi; var kroki = input.zaplanowaneKroki; var pokojeDocelowe = input.pokojeDocelowe; var maxNumberKroku = kroki.Length; var liczbaDzieci = input.liczbaDzieci; var pokojeDzieci = input.pokojeStartoweDzieci; int[] pokojePetli = new int[pokojeDzieci.Length]; pokojeDzieci.CopyTo(pokojePetli, 0); var numerKroku = 0; var calkowitaIloscKrokow = 1; var iloscSukcesow = 0; var endTime = DateTime.Now.AddMinutes(60); while (true) { if (numerKroku == maxNumberKroku) { numerKroku = 0; if (pokojeDzieci.OrderBy(x=>x).SequenceEqual(pokojePetli.OrderBy(x=>x))) { return "NIE"; }else if (DateTime.Now >= endTime) { return "TIMEOUT"; } else { pokojeDzieci.CopyTo(pokojePetli,0); } } for (int dziecko = 0; dziecko < input.liczbaDzieci; dziecko++) { var pokojZajmowanyPrzezDziecko = pokojeDzieci[dziecko]; pokojeDzieci[dziecko] = pokoje[pokojZajmowanyPrzezDziecko, kroki[numerKroku]]; iloscSukcesow += pokojeDocelowe.Contains(pokojeDzieci[dziecko]) ? 1 : 0; } if (iloscSukcesow == liczbaDzieci) break; calkowitaIloscKrokow++; numerKroku++; iloscSukcesow = 0; } return calkowitaIloscKrokow.ToString(); }
Leave a Comment