76682024-01-10 11:27:03NotYouA lehető legkevesebb átszállás (50 pont)csharpElfogadva 50/5052ms32008 KiB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace atszallas
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] s = Console.ReadLine().Split().Select(int.Parse).ToArray();
            int vs = s[0];
            int asz = s[1];
            List<int> kezd = new List<int>();
            List<int> veg = new List<int>();
            int iv = 0;
            bool vv = false;
            int kezdi = 0;
            int at = 0;
            List<int> vh = new List<int>();

            for (int i = 0; i < vs; i++)
            {
                int[] s1 = Console.ReadLine().Split().Select(int.Parse).ToArray();
                kezd.Add(s1[0]);
                veg.Add(s1[1]);

                if (kezd[i] == 1 && iv < kezd [i])
                {
                    iv = veg[i];
                    kezdi = i;
                    at++;
                }

                if (veg[i] == asz)
                {
                   vv = true;
                }
            }
            
            
            if (iv == 0 || vv == false)
            {
                Console.WriteLine(-1);
            }
            else
            {
                List<int> vsz = new List<int>();
                int max = 0;
                int maxi = 0;
                int cv = 0;
                while (kezd[cv]==1)
                {
                    if (veg[cv]>max)
                    {
                        max = veg[cv];
                        maxi = cv+1;
                    }
                    cv++;
                }

                //Console.WriteLine(maxi);
                vsz.Add(maxi);
                int maxveg = max;
                int maxvegi = cv;
                for (int i = cv; i < vs; i++)
                {
                    if (kezd[i] <= max)
                    {
                        if (maxveg <veg[i])
                        {
                            maxveg = veg[i];
                            maxvegi = i;
                        }
                        
                    }
                    else
                    {
                        vsz.Add(maxvegi + 1);
                        max = maxveg;
                        maxvegi = i;

                    }
                }
                if (veg[vsz[vsz.Count-1]-1] != asz)
                {
                    vsz.Add(maxvegi + 1);
                }
                bool hiba = false;
                for (int i = 1; i < vsz.Count; i++)
                {
                    if (veg[vsz[i-1]-1]<kezd[vsz[i]-1])
                    {
                        hiba = true;
                    }
                }
                if (hiba == true)
                {
                    Console.WriteLine(-1);
                }
                else
                {
                    Console.WriteLine(vsz.Count-1);
                    Console.WriteLine(string.Join(" ", vsz));
                }

            }
            Console.ReadLine();
        }
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/034ms22140 KiB
2Elfogadva0/052ms27792 KiB
3Elfogadva1/132ms22652 KiB
4Elfogadva1/132ms23000 KiB
5Elfogadva2/234ms23560 KiB
6Elfogadva2/232ms23556 KiB
7Elfogadva2/235ms24440 KiB
8Elfogadva2/237ms25096 KiB
9Elfogadva2/237ms25788 KiB
10Elfogadva2/239ms26080 KiB
11Elfogadva2/241ms26768 KiB
12Elfogadva2/243ms27336 KiB
13Elfogadva2/235ms25336 KiB
14Elfogadva2/237ms26252 KiB
15Elfogadva2/239ms26800 KiB
16Elfogadva2/241ms28308 KiB
17Elfogadva2/246ms29360 KiB
18Elfogadva2/248ms29976 KiB
19Elfogadva2/250ms30432 KiB
20Elfogadva2/250ms30288 KiB
21Elfogadva2/250ms30564 KiB
22Elfogadva2/250ms31316 KiB
23Elfogadva2/252ms31724 KiB
24Elfogadva2/252ms31872 KiB
25Elfogadva2/252ms31448 KiB
26Elfogadva2/252ms31336 KiB
27Elfogadva2/250ms31796 KiB
28Elfogadva2/250ms32008 KiB