814 2022. 01. 16 19:54:25 Halasz Eszter Társaság (50) cpp11 Hibás válasz 7/50 8ms 3448 KiB
#include <iostream>
#include <vector>
#include <algorithm>

#define ll long long
using namespace std;

//ifstream cin("tarsasag.in");
//ofstream cout("tarsasag.out");

struct adat
{
    ll kezd,veg,tav;
};
vector< adat >x;

struct adat2
{
    ll veg,tav;
};
vector<adat2>y;

ll n,k,i,a,b,maxi=-1;
ll has(adat a, adat b)
{
    if(a.tav>b.tav) return 1;
    else return 0;
}

void mely(ll csp, ll t)
{
    if(y[csp].veg==0) y[csp].tav=max(y[csp].tav,t);
    else 
    {
        if(y[csp].veg!=0)  mely(y[csp].veg,t+y[csp].tav);
    }
}
int main()
{
    cin>>n>>k;
    x.resize(n+1);
    for(i=1;i<n;++i)
    {
        cin>>a>>b;
        x[i]={i+1,a,b};
    }

    sort(x.begin()+1,x.end(),has);

    //for(i=1;i<=n;++i) cout<<x[i].kezd<<" "<<x[i].veg<<" "<<x[i].tav<<"\n";

    y.resize(n+1);
    for(i=k+1;i<=n;++i)
        y[x[i].kezd]={x[i].veg,x[i].tav};
    

    //for(i=1;i<=n;++i)
     //cout<<i<<" "<<y[i].veg<<" "<<y[i].tav<<"\n";

    for(i=1;i<=n;++i)
    {
        if(y[i].veg!=0) mely(i,0);
    }

    for(i=1;i<=n;++i) if(y[i].tav>maxi) maxi=y[i].tav;
    cout<<maxi;
    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 7/50
1 Elfogadva 0/0 2ms 1804 KiB
2 Hibás válasz 0/0 8ms 2280 KiB
3 Hibás válasz 0/3 1ms 1960 KiB
4 Hibás válasz 0/3 1ms 1964 KiB
5 Elfogadva 3/3 1ms 1976 KiB
6 Hibás válasz 0/3 2ms 1980 KiB
7 Hibás válasz 0/3 2ms 2000 KiB
8 Hibás válasz 0/3 2ms 2024 KiB
9 Hibás válasz 0/3 3ms 2080 KiB
10 Hibás válasz 0/3 4ms 2276 KiB
11 Hibás válasz 0/3 6ms 2344 KiB
12 Hibás válasz 0/3 4ms 2552 KiB
13 Hibás válasz 0/4 8ms 2520 KiB
14 Hibás válasz 0/4 6ms 2620 KiB
15 Hibás válasz 0/4 7ms 2864 KiB
16 Elfogadva 4/4 8ms 3192 KiB
17 Hibás válasz 0/4 8ms 3448 KiB