75002024-01-09 11:25:47PeterSípálya (55 pont)csharpIdőlimit túllépés 0/55490ms27972 KiB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace sipalya
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var sv = Console.ReadLine().Split().Select(int.Parse).ToArray();
            int N = sv[0]; //hegy hossza
            int K = sv[1]; //sípálya hossza
            var hegy = Console.ReadLine().Split().Select(int.Parse).ToArray();

            int maxertek = 0;
            int maxhely = 0;

            //Maximumkeresés
            for (int i = 0; i < hegy.Length; i++)
            {
                if (hegy[i]>maxertek)
                {
                    maxertek = hegy[i];
                    maxhely = i;
                }
            }

            int[] teljesenatdolozotthegy = new int[N];
            Array.Copy(hegy,teljesenatdolozotthegy,N);
            teljesenatdolozotthegy[maxhely] = maxertek;
            int[] odahordottfoldkupacok = new int[N];

            for (int i = 0; i < maxhely; i++)
            {
                while (teljesenatdolozotthegy[i]<maxertek+maxhely-i)
                {
                    teljesenatdolozotthegy[i]++;
                    odahordottfoldkupacok[i]++;
                }
            }

            int helye = 1;
            for (int i = maxhely+1; i < N; i++)
            {
                while (teljesenatdolozotthegy[i]<maxertek-helye)
                {
                    teljesenatdolozotthegy[i]++;
                    odahordottfoldkupacok[i]++;
                }
                helye++;
            }

            //Legjobb intervallum kiszámítása
            int jelenlegiosszeg = 0;
            int minertek = int.MaxValue;
            int minhely = 0;
            for (int i = 0; i < N-K+1; i++)
            {
                for (int j = i; j < K+i; j++)
                {
                    jelenlegiosszeg += odahordottfoldkupacok[j];
                }

                if (jelenlegiosszeg<minertek)
                {
                    minertek = jelenlegiosszeg;
                    minhely = i;
                }

                jelenlegiosszeg = 0;
            }

            Console.WriteLine(minertek);
            Console.ReadKey();
        }
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/55
1Elfogadva0/032ms22336 KiB
2Időlimit túllépés0/0469ms4400 KiB
3Időlimit túllépés0/2469ms4948 KiB
4Időlimit túllépés0/2488ms5516 KiB
5Időlimit túllépés0/2472ms5492 KiB
6Időlimit túllépés0/2456ms5972 KiB
7Időlimit túllépés0/3488ms6164 KiB
8Hibás válasz0/150ms26412 KiB
9Hibás válasz0/148ms26376 KiB
10Hibás válasz0/154ms26592 KiB
11Időlimit túllépés0/1469ms7356 KiB
12Időlimit túllépés0/1423ms26780 KiB
13Időlimit túllépés0/1481ms7384 KiB
14Időlimit túllépés0/2469ms7472 KiB
15Időlimit túllépés0/2437ms7740 KiB
16Időlimit túllépés0/2465ms26824 KiB
17Időlimit túllépés0/2449ms26708 KiB
18Időlimit túllépés0/2465ms27016 KiB
19Időlimit túllépés0/3486ms27316 KiB
20Időlimit túllépés0/2469ms27396 KiB
21Időlimit túllépés0/2474ms27144 KiB
22Időlimit túllépés0/2490ms27008 KiB
23Időlimit túllépés0/2477ms27244 KiB
24Időlimit túllépés0/2474ms27972 KiB
25Időlimit túllépés0/2486ms27384 KiB
26Időlimit túllépés0/2481ms27392 KiB
27Időlimit túllépés0/2477ms27304 KiB
28Időlimit túllépés0/3483ms27260 KiB
29Időlimit túllépés0/3462ms27652 KiB
30Időlimit túllépés0/3446ms27872 KiB