71822024-01-02 11:37:57czitaA lehető legkevesebb átszállás (50 pont)csharpHibás válasz 37/5050ms31732 KiB
using System;
using System.Collections.Generic;
using System.Linq;


namespace átszállás
{
    internal class Program
    {




        static void Main(string[] args)
        {
            int[] st = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
            int N = st[1];
            int M = st[0];
            st = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
            bool vanvegallomas = false, vanatfedes = true; ;
            if (st[0] != 1)
            { Console.WriteLine(-1); }
            else
            {
                int vonat = 1, elozoveg = 0, veg = st[1], kezd;
                List<int> vonatok = new List<int>();
                int cv = 1;
                while (st[0] == 1)//az első állomásról induló vonat
                {
                    if (st[1] > veg)
                    {
                        veg = st[1];
                        vonat = cv;
                    }
                    cv++;
                    st = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
                    if (st[1] == N)
                    {
                        vanvegallomas = true;
                    }
                }
                vonatok.Add(vonat);
                kezd = st[0];
                elozoveg = st[1];
                int kovetkezoveg = veg;
                int elozokezd = st[0];
                for (int i = cv; i < M; i++)
                {
                    if (!vanvegallomas)
                    {
                        if (st[0] <= veg)
                        {
                            if (st[1] > kovetkezoveg)
                            {
                                kovetkezoveg = st[1];
                                vonat = i;
                            }
                        }
                        else//Ha nincs átfedés
                        {
                            if (kovetkezoveg < st[0])
                            {
                                vanatfedes = false;
                            }
                            vonatok.Add(vonat);
                            veg = kovetkezoveg;
                            vonat = i;
                            

                        }

                        elozoveg = st[1];
                        elozokezd = st[0];
                        if (st[1] == N)
                        {
                            vanvegallomas = true;
                        }
                    }
                    if (i <= M - 1)
                        st = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();

                }
                vonatok.Add(vonat);
                if (!vanvegallomas || !vanatfedes)
                { Console.WriteLine(-1); }
                else
                {
                    Console.WriteLine(vonatok.Count-1);
                    Console.WriteLine(string.Join(" ", vonatok));
                }


            }
            Console.ReadKey();
        }
    }
}


RészfeladatÖsszpontTesztVerdiktIdőMemória
base37/50
1Elfogadva0/032ms22048 KiB
2Elfogadva0/050ms27508 KiB
3Elfogadva1/132ms22564 KiB
4Hibás válasz0/132ms23356 KiB
5Hibás válasz0/232ms23532 KiB
6Hibás válasz0/232ms23608 KiB
7Elfogadva2/235ms24192 KiB
8Elfogadva2/237ms24300 KiB
9Elfogadva2/237ms25016 KiB
10Elfogadva2/239ms25808 KiB
11Elfogadva2/241ms26508 KiB
12Elfogadva2/243ms26936 KiB
13Elfogadva2/235ms24796 KiB
14Elfogadva2/239ms25384 KiB
15Elfogadva2/239ms26268 KiB
16Elfogadva2/241ms27648 KiB
17Elfogadva2/246ms28716 KiB
18Elfogadva2/246ms29256 KiB
19Elfogadva2/248ms29808 KiB
20Elfogadva2/248ms30288 KiB
21Elfogadva2/248ms30692 KiB
22Elfogadva2/248ms31164 KiB
23Hibás válasz0/248ms31452 KiB
24Hibás válasz0/248ms31244 KiB
25Elfogadva2/248ms31492 KiB
26Hibás válasz0/248ms31448 KiB
27Hibás válasz0/248ms31316 KiB
28Elfogadva2/248ms31732 KiB