38492023-03-03 11:53:23PeterFasor (40)csharpIdőlimit túllépés 20/40284ms28692 KiB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace fasor
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //Beolvasás:
            int[] st = Console.ReadLine().Split().Select(int.Parse).ToArray();
            int N = st[0];
            int K = st[1];
            //Tömbnek kezdő-végző elemek
            int[] X = new int[N + 2 * K];
            int i = 0;
            for (i = 0; i < K; i++)
            {
                X[i] = 0;   
            }
            //int[] st2 = new int[N+1]; //Emiatt miért akad ki hogyha ez nincs kikommentezve és a következő sorban az st helyett az st2-t akarnám
            st = Console.ReadLine().Split().Select(int.Parse).ToArray(); //FONTOS: 48k karakternél kiakad? Miért?
            for (i = i; i < K + N; i++)
            {
                X[i] = st[i - K];
            }
            for (i = i; i < K + N + K; i++)
            {
                X[i] = 0;
            }



            //Algoritmus:
            //Bool tokeletes = true;
            //Kiindul egy fától és megnézi hogy annak K környezében van-e magasabb (+- <-- How? K elemmel feltöltjük a tömb elejét és végét, így nem fog kiindexelni), for ciklussal végigmegy -K-tól K-ig, ha talál egy nagyobb akkor break, tokeles = false.
            //If tokeletes = true akkor break;, ha nem az akkor obviously megy tovább a következő fára ami a foreach következő eleme lesz

            int faszam = 0;
            //int tokeletes = 0; //-1 - false; 0 - idk; 1 - true
            bool volt = false; //Talált-e ilyen intervallumot
            for (int j = K; j < X.Length-K; j++)
            {
                faszam++;
                bool vege = true;
                for (i = j-K; i <= j+K; i++)
                {
                    if (X[i] > X[j])
                    {
                        vege = false;
                        break;
                    }
                }
                if (vege) //Ha tökéletes volt az előző cikluslépésben látott mutatvány
                {
                    volt = true;
                    break;
                }
            }

            if (volt)
            {
                Console.WriteLine(faszam);
            }
            else
            {
                Console.WriteLine(-1);
            }
            

            Console.ReadKey();

        }
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base20/40
1Elfogadva0/032ms22076 KiB
2Elfogadva0/039ms24784 KiB
3Elfogadva2/230ms22708 KiB
4Elfogadva2/232ms23208 KiB
5Elfogadva2/232ms23312 KiB
6Elfogadva2/230ms23948 KiB
7Elfogadva2/235ms24956 KiB
8Elfogadva2/237ms25440 KiB
9Elfogadva2/241ms27072 KiB
10Elfogadva2/241ms27772 KiB
11Elfogadva2/239ms27680 KiB
12Elfogadva2/239ms27584 KiB
13Időlimit túllépés0/2268ms17848 KiB
14Időlimit túllépés0/2261ms17980 KiB
15Időlimit túllépés0/2257ms26316 KiB
16Időlimit túllépés0/2246ms27436 KiB
17Időlimit túllépés0/2256ms28692 KiB
18Időlimit túllépés0/2284ms28396 KiB
19Időlimit túllépés0/2268ms28268 KiB
20Időlimit túllépés0/2259ms16396 KiB
21Időlimit túllépés0/2261ms27240 KiB
22Időlimit túllépés0/2277ms28224 KiB