1825 2022. 12. 04 13:42:08 kdb Tevefarm cpp11 Elfogadva 50/50 32ms 8228 KiB
#include <iostream>
#include <vector>
#define ll long long
using namespace std;

ostream& operator<<(ostream& os, vector<int>& input)
{
    for (auto i : input)
    {
        os << i << " ";
    }
    return os;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    vector<int>a(100001);
    vector<ll>t(100001);
    vector<ll>tc(100001);
    vector<bool>benneVanE(100001);
    int n;
    cin >> n;

    for (int i = 1; i <= n; i++) cin >> t[i];
    for (int i = 2; i <= n; i++) cin >> a[i];

    ll ans = 0;
    for (int i = n; i >= 1; i--) {
        if (t[i] > tc[i]) {
            ans -= tc[i];
            ans += t[i];
            benneVanE[i] = true;
            tc[a[i]] += t[i];
        }
        else {
            tc[a[i]] += tc[i];
        }
    }
    cout << ans << endl;
    vector<int> ansv;
    for (int i = 1; i <= n; i++)
    {
        if (benneVanE[i] && !benneVanE[a[i]]) ansv.push_back(i);
        benneVanE[i] = benneVanE[i] || benneVanE[a[i]];
    }

    cout << ansv.size() << endl << ansv << endl;
    return 0;
}
/*
8
5 5 7 1 2 3 2 4
1
1
2
2
2
3
3
-13
-4
-3 4 5 6
*/
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 4ms 5700 KiB
2 Elfogadva 0/0 4ms 5992 KiB
3 Elfogadva 4/4 4ms 6200 KiB
4 Elfogadva 4/4 3ms 6540 KiB
5 Elfogadva 4/4 3ms 6388 KiB
6 Elfogadva 4/4 4ms 6680 KiB
7 Elfogadva 4/4 16ms 7340 KiB
8 Elfogadva 6/6 18ms 7552 KiB
9 Elfogadva 6/6 21ms 7908 KiB
10 Elfogadva 6/6 24ms 8068 KiB
11 Elfogadva 6/6 28ms 8032 KiB
12 Elfogadva 6/6 32ms 8228 KiB