7219 | 2024-01-03 18:36:17 | czita | A lehető legkevesebb átszállás (50 pont) | csharp | Compilation error |
using System;
using System.Collections.Generic;
namespace átszállás
{
internal class Program
{
static int[] be()
{
string[] sts = Console.ReadLine().Split(' ');
int[] st = new int[3];
st[1] = int.Parse(sts[1]);
st[0] = int.Parse(sts[0]);
return st;
}
static void Main(string[] args)
{
int[] st = be();//alapadatok beolvasása
int N = st[1];
int M = st[0];
st = be();//első vonat beolvasása
List<int[]> v = new List<int[]>();
st[2] = 1;
if (st[0] != 1) Console.WriteLine(-1);//nem a kezdőállomásról indul az első vonat
else
{
int indulas = st[0], erkezes = st[1], vonat = 1;
for (int i = 1; i <M; i++)
{
if (indulas == st[0])//ha azonos induló állomáson vagyunk
{
if (erkezes < st[1])
{
erkezes = st[1];//az adott állomásról a legtávolabb menő vonat
vonat = i;
}
}
else//másik indulló állomáson vagyunk
{
int[] t = new int[3];//az elĹ‘zĹ‘ leghosszabb adatait rögzĂtjĂĽk
t[0] = indulas;
t[1] = erkezes;
t[2] = vonat;
v.Add(t);//beteszük egy listába
indulas = st[0];//a következő indulásnál keressük a legtávolabbi érkezést
erkezes = st[1];
vonat = i;
}
be();
}
int[] t = new int[3];//az elĹ‘zĹ‘ leghosszabb adatait rögzĂtjĂĽk
t[0] = indulas;
t[1] = erkezes;
t[2] = vonat;
int[] t1 = new int[3];
t1[0] = indulas;
t1[1] = erkezes;
t1[2] = vonat;
v.Add(t1);
//belső intervallumok kizárása
List<int[]> v2 = new List<int[]>();
v2.Add(v[0]);
erkezes = v[0][1];
foreach (var item in v)
{
if (item[1] > erkezes)
{
v2.Add(item);
erkezes = item[1];
}
}
//a legkedvezőbb intevallumok kiváasztása
List<int[]> v3 = new List<int[]>();
if (v2.Count == 1)
{
v3.Add(v2[0]);
}
else
{
v3.Add(v2[0]);
erkezes = v2[0][1];
int maxi = 1;
for (int i = 1; i < v2.Count; i++)
{
if (v2[i][0] <= erkezes)
{
if (v2[i][1] > v2[maxi][1])
{
maxi = i;
}
}
else
{
v3.Add(v2[maxi]);
erkezes = v2[maxi][1];
maxi = i;
}
}
v3.Add(v2[maxi]);
}
//van e átfedés
int cv = 1;
while (cv < v3.Count && v3[cv][0] <= v3[cv - 1][1])
{
cv++;
}
if (cv < v3.Count||v3[v3.Count-1][1]!=N)
{
Console.WriteLine(-1);
}
else
{
Console.WriteLine(v3.Count - 1);
foreach (var item in v3)
{
Console.Write(item[2] + " ");
}
Console.WriteLine();
}
}
Console.ReadKey();
}
}
}
exit status 1
Compilation failed: 1 error(s), 0 warnings