129832025-01-04 14:14:29KissCsongor777A lehető legkevesebb átszállás (50 pont)cpp17Hibás válasz 40/508ms628 KiB
#include <iostream>
#include <algorithm>

using namespace std;

struct vonat
    {
        int s,k,v;
    };

vonat V[100001],W[100001];

int f (vonat x, vonat y)
{
    if(x.k<y.k)return 1;
    else if(x.k==y.k)
        if(x.v>y.v)return 1;
        else return 0;
    else return 0;
}

int main()
{
    int n,m,k=1,maxv=0,a;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>V[i].k>> V[i].v;
        V[i].s=i;
    }

    sort(V+1, V+n+1, f);
    //for(int i=1; i<=n; i++)cout<<V[i].s<<" ";
    if(V[1].k==1)
    {W[1]=V[1];
    for(int i=2; i<=n-1; i++)
    {
        if(V[i].k<=W[k].v)if(V[i].v>W[k].v)
        {if(V[i].v>maxv){maxv=V[i].v;a=i;}}

        if(V[i+1].k>W[k].v && V[i].k<=W[k].v){if(maxv>W[k].v){k++;W[k]=V[a];maxv=0;}
        else {cout<<-1; return 0;}}

    }
    if(W[k].v==m)
    {cout<<k-1<<endl;
    for(int i=1; i<=k; i++)cout<<W[i].s<<" ";}
    else cout<<-1;}
    else cout<<-1;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base40/50
1Elfogadva0/01ms320 KiB
2Elfogadva0/08ms320 KiB
3Elfogadva1/11ms320 KiB
4Elfogadva1/11ms320 KiB
5Elfogadva2/21ms320 KiB
6Hibás válasz0/21ms320 KiB
7Elfogadva2/22ms320 KiB
8Elfogadva2/22ms428 KiB
9Elfogadva2/22ms320 KiB
10Elfogadva2/23ms556 KiB
11Elfogadva2/24ms320 KiB
12Elfogadva2/24ms320 KiB
13Elfogadva2/21ms320 KiB
14Elfogadva2/22ms396 KiB
15Elfogadva2/23ms508 KiB
16Elfogadva2/24ms500 KiB
17Elfogadva2/26ms428 KiB
18Elfogadva2/27ms320 KiB
19Elfogadva2/27ms508 KiB
20Elfogadva2/27ms468 KiB
21Elfogadva2/28ms628 KiB
22Elfogadva2/28ms500 KiB
23Hibás válasz0/28ms320 KiB
24Hibás válasz0/28ms608 KiB
25Elfogadva2/28ms488 KiB
26Hibás válasz0/28ms520 KiB
27Hibás válasz0/28ms572 KiB
28Elfogadva2/28ms428 KiB