129902025-01-04 15:52:34KissCsongor777A lehető legkevesebb átszállás (50 pont)cpp17Hibás válasz 41/508ms568 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;
    bool elert=false;
    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 && !elert ; 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)elert=true;

    }
    if(!elert && V[n].v==m && V[n].k>=W[k].v){k++;W[k]=V[n];}
    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
base41/50
1Elfogadva0/01ms320 KiB
2Elfogadva0/08ms320 KiB
3Elfogadva1/11ms320 KiB
4Hibás válasz0/11ms508 KiB
5Elfogadva2/21ms320 KiB
6Elfogadva2/21ms320 KiB
7Elfogadva2/21ms320 KiB
8Elfogadva2/22ms320 KiB
9Elfogadva2/22ms320 KiB
10Elfogadva2/23ms320 KiB
11Elfogadva2/24ms456 KiB
12Elfogadva2/24ms568 KiB
13Elfogadva2/21ms500 KiB
14Elfogadva2/22ms320 KiB
15Elfogadva2/23ms508 KiB
16Elfogadva2/24ms500 KiB
17Elfogadva2/27ms448 KiB
18Elfogadva2/26ms320 KiB
19Elfogadva2/27ms516 KiB
20Elfogadva2/27ms484 KiB
21Elfogadva2/28ms532 KiB
22Elfogadva2/28ms320 KiB
23Hibás válasz0/27ms320 KiB
24Hibás válasz0/27ms320 KiB
25Elfogadva2/28ms508 KiB
26Hibás válasz0/28ms484 KiB
27Hibás válasz0/28ms500 KiB
28Elfogadva2/28ms496 KiB