814 2022. 01. 16 19:54:25 Halasz Eszter Társaság (50) cpp11 Wrong answer 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;
}
Subtask Sum Test Verdict Time Memory
base 7/50
1 Accepted 0/0 2ms 1804 KiB
2 Wrong answer 0/0 8ms 2280 KiB
3 Wrong answer 0/3 1ms 1960 KiB
4 Wrong answer 0/3 1ms 1964 KiB
5 Accepted 3/3 1ms 1976 KiB
6 Wrong answer 0/3 2ms 1980 KiB
7 Wrong answer 0/3 2ms 2000 KiB
8 Wrong answer 0/3 2ms 2024 KiB
9 Wrong answer 0/3 3ms 2080 KiB
10 Wrong answer 0/3 4ms 2276 KiB
11 Wrong answer 0/3 6ms 2344 KiB
12 Wrong answer 0/3 4ms 2552 KiB
13 Wrong answer 0/4 8ms 2520 KiB
14 Wrong answer 0/4 6ms 2620 KiB
15 Wrong answer 0/4 7ms 2864 KiB
16 Accepted 4/4 8ms 3192 KiB
17 Wrong answer 0/4 8ms 3448 KiB