162942025-04-21 09:24:33horkaVállalati ügyeletcpp17Időlimit túllépés 42/1001.101s40104 KiB
#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define pb push_back
#define sz(x) (int)x.size()
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
const int c=2e5+3,inf=1e7,gy=350;
vector<int> adj[c];
int be[c],ki[c],ido;
bool val[4*c];
void dfs(int cs)
{
    be[cs]=++ido;
    for(int &i:adj[cs])
        if(!be[i]) dfs(i);
    ki[cs]=++ido;
}
bool rendez(array<int, 3> a, array<int, 3> b)
{
    return (a[0]/gy<b[0]/gy || (a[0]/gy==b[0]/gy && a[1]<b[1]));
}
signed main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int n; cin>>n;
    vector<int> p(n+1),a(n+1);
    for(int i=1; i<=n; i++)
    {
        cin>>p[i];
        if(i>1)
        {
            adj[i].pb(p[i]);
            adj[p[i]].pb(i);
        }
    }
    for(int i=1; i<=n; i++)
        cin>>a[i];
    dfs(1);
    vector<array<int, 3>> kerd;
    vector<int> ans(n+1);
    for(int i=1; i<=n; i++)
        kerd.pb({be[i],ki[i],i});
    sort(all(kerd),rendez);
    vector<int> cnt(n+1);
    set<int> nincs;
    for(int i=1; i<=n+1; i++)
        nincs.insert(i);
    vector<int> ert(2*n+1);
    for(int i=1; i<=n; i++)
        ert[be[i]]=a[i];
    auto op=[&](int ind, int ad)
    {
        if(ert[ind]==0) return;
        cnt[ert[ind]]+=ad;
        if(cnt[ert[ind]]==0) nincs.insert(ert[ind]);
        else nincs.erase(ert[ind]);
    };
    int bal=1,jobb=1,kor=0;
    op(1,1);
    for(auto &[l,r,ind]:kerd)
    {
        while(bal>l)
        {
            bal--;
            op(bal,1);
        }
        while(bal<l)
        {
            op(bal,-1);
            bal++;
        }
        while(jobb>r)
        {
            op(jobb,-1);
            jobb--;
        }
        while(jobb<r)
        {
            jobb++;
            op(jobb,1);
        }
        ans[ind]=*nincs.begin();
    }
    for(int i=1; i<=n; i++)
        cout<<ans[i]<<" ";
    cout<<"\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva4ms5100 KiB
2Időlimit túllépés1.085s29596 KiB
subtask25/5
3Elfogadva6ms4920 KiB
4Elfogadva4ms4916 KiB
5Elfogadva6ms4928 KiB
6Elfogadva4ms5108 KiB
subtask38/8
7Elfogadva6ms4920 KiB
8Elfogadva4ms4916 KiB
9Elfogadva6ms4928 KiB
10Elfogadva4ms5108 KiB
11Elfogadva337ms30392 KiB
12Elfogadva354ms30388 KiB
13Elfogadva402ms30388 KiB
14Elfogadva518ms30456 KiB
subtask412/12
15Elfogadva6ms4920 KiB
16Elfogadva4ms4916 KiB
17Elfogadva6ms4928 KiB
18Elfogadva4ms5108 KiB
19Elfogadva310ms39588 KiB
20Elfogadva372ms39332 KiB
21Elfogadva393ms39372 KiB
22Elfogadva532ms39076 KiB
23Elfogadva365ms40100 KiB
24Elfogadva330ms39840 KiB
subtask517/17
25Elfogadva6ms4920 KiB
26Elfogadva4ms4916 KiB
27Elfogadva6ms4928 KiB
28Elfogadva4ms5108 KiB
29Elfogadva8ms5172 KiB
30Elfogadva7ms5428 KiB
31Elfogadva8ms5620 KiB
32Elfogadva9ms5404 KiB
33Elfogadva9ms5420 KiB
34Elfogadva8ms5184 KiB
35Elfogadva8ms5176 KiB
36Elfogadva8ms5404 KiB
37Elfogadva8ms5428 KiB
38Elfogadva8ms5172 KiB
39Elfogadva8ms5400 KiB
40Elfogadva8ms5392 KiB
41Elfogadva8ms5420 KiB
subtask60/28
42Időlimit túllépés1.093s29788 KiB
43Időlimit túllépés1.093s30644 KiB
44Időlimit túllépés1.093s32420 KiB
45Időlimit túllépés1.093s34732 KiB
46Időlimit túllépés1.088s36704 KiB
47Időlimit túllépés1.088s37988 KiB
48Elfogadva540ms30368 KiB
49Elfogadva549ms39080 KiB
50Elfogadva345ms40104 KiB
subtask70/30
51Elfogadva4ms5108 KiB
52Időlimit túllépés1.075s29600 KiB
53Elfogadva6ms4920 KiB
54Elfogadva4ms4916 KiB
55Elfogadva6ms4928 KiB
56Elfogadva4ms5108 KiB
57Elfogadva337ms30392 KiB
58Elfogadva354ms30388 KiB
59Elfogadva402ms30388 KiB
60Elfogadva518ms30456 KiB
61Elfogadva310ms39588 KiB
62Elfogadva372ms39332 KiB
63Elfogadva393ms39372 KiB
64Elfogadva532ms39076 KiB
65Elfogadva365ms40100 KiB
66Elfogadva330ms39840 KiB
67Elfogadva8ms5172 KiB
68Elfogadva7ms5428 KiB
69Elfogadva8ms5620 KiB
70Elfogadva9ms5404 KiB
71Elfogadva9ms5420 KiB
72Elfogadva8ms5184 KiB
73Elfogadva8ms5176 KiB
74Elfogadva8ms5404 KiB
75Elfogadva8ms5428 KiB
76Elfogadva8ms5172 KiB
77Elfogadva8ms5400 KiB
78Elfogadva8ms5392 KiB
79Elfogadva8ms5420 KiB
80Időlimit túllépés1.093s29788 KiB
81Időlimit túllépés1.093s30644 KiB
82Időlimit túllépés1.093s32420 KiB
83Időlimit túllépés1.093s34732 KiB
84Időlimit túllépés1.088s36704 KiB
85Időlimit túllépés1.088s37988 KiB
86Elfogadva540ms30368 KiB
87Elfogadva549ms39080 KiB
88Elfogadva345ms40104 KiB
89Elfogadva797ms29864 KiB
90Elfogadva833ms30000 KiB
91Időlimit túllépés1.101s29604 KiB
92Időlimit túllépés1.08s29600 KiB
93Időlimit túllépés1.087s31656 KiB
94Időlimit túllépés1.08s33952 KiB
95Időlimit túllépés1.085s36260 KiB
96Időlimit túllépés1.09s29864 KiB
97Időlimit túllépés1.09s30112 KiB
98Időlimit túllépés1.078s30884 KiB
99Időlimit túllépés1.101s29856 KiB
100Időlimit túllépés1.087s30884 KiB
101Időlimit túllépés1.083s32928 KiB