3849 2023. 03. 03 11:53:23 Peter Fasor (40) csharp Időlimit túllépés 20/40 284ms 28692 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 Összpont Teszt Verdikt Idő Memória
base 20/40
1 Elfogadva 0/0 32ms 22076 KiB
2 Elfogadva 0/0 39ms 24784 KiB
3 Elfogadva 2/2 30ms 22708 KiB
4 Elfogadva 2/2 32ms 23208 KiB
5 Elfogadva 2/2 32ms 23312 KiB
6 Elfogadva 2/2 30ms 23948 KiB
7 Elfogadva 2/2 35ms 24956 KiB
8 Elfogadva 2/2 37ms 25440 KiB
9 Elfogadva 2/2 41ms 27072 KiB
10 Elfogadva 2/2 41ms 27772 KiB
11 Elfogadva 2/2 39ms 27680 KiB
12 Elfogadva 2/2 39ms 27584 KiB
13 Időlimit túllépés 0/2 268ms 17848 KiB
14 Időlimit túllépés 0/2 261ms 17980 KiB
15 Időlimit túllépés 0/2 257ms 26316 KiB
16 Időlimit túllépés 0/2 246ms 27436 KiB
17 Időlimit túllépés 0/2 256ms 28692 KiB
18 Időlimit túllépés 0/2 284ms 28396 KiB
19 Időlimit túllépés 0/2 268ms 28268 KiB
20 Időlimit túllépés 0/2 259ms 16396 KiB
21 Időlimit túllépés 0/2 261ms 27240 KiB
22 Időlimit túllépés 0/2 277ms 28224 KiB