162932025-04-21 09:23:43horkaVállalati ügyeletcpp17Időlimit túllépés 42/1001.101s42420 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=500;
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
1Elfogadva4ms4916 KiB
2Időlimit túllépés1.077s31820 KiB
subtask25/5
3Elfogadva6ms4920 KiB
4Elfogadva4ms4916 KiB
5Elfogadva6ms4916 KiB
6Elfogadva4ms4916 KiB
subtask38/8
7Elfogadva6ms4920 KiB
8Elfogadva4ms4916 KiB
9Elfogadva6ms4916 KiB
10Elfogadva4ms4916 KiB
11Elfogadva330ms31772 KiB
12Elfogadva365ms31872 KiB
13Elfogadva407ms31916 KiB
14Elfogadva505ms32064 KiB
subtask412/12
15Elfogadva6ms4920 KiB
16Elfogadva4ms4916 KiB
17Elfogadva6ms4916 KiB
18Elfogadva4ms4916 KiB
19Elfogadva317ms41892 KiB
20Elfogadva368ms41636 KiB
21Elfogadva409ms41640 KiB
22Elfogadva533ms41496 KiB
23Elfogadva367ms42400 KiB
24Elfogadva342ms42420 KiB
subtask517/17
25Elfogadva6ms4920 KiB
26Elfogadva4ms4916 KiB
27Elfogadva6ms4916 KiB
28Elfogadva4ms4916 KiB
29Elfogadva7ms5356 KiB
30Elfogadva8ms5428 KiB
31Elfogadva7ms5428 KiB
32Elfogadva9ms5172 KiB
33Elfogadva8ms5436 KiB
34Elfogadva8ms5172 KiB
35Elfogadva9ms5400 KiB
36Elfogadva8ms5252 KiB
37Elfogadva8ms5408 KiB
38Elfogadva8ms5204 KiB
39Elfogadva8ms5172 KiB
40Elfogadva8ms5172 KiB
41Elfogadva7ms5428 KiB
subtask60/28
42Időlimit túllépés1.101s32180 KiB
43Időlimit túllépés1.101s33188 KiB
44Időlimit túllépés1.101s34980 KiB
45Időlimit túllépés1.1s37028 KiB
46Időlimit túllépés1.077s39080 KiB
47Időlimit túllépés1.077s40608 KiB
48Elfogadva554ms32156 KiB
49Elfogadva532ms41632 KiB
50Elfogadva351ms42408 KiB
subtask70/30
51Elfogadva4ms5116 KiB
52Időlimit túllépés1.093s29836 KiB
53Elfogadva6ms4920 KiB
54Elfogadva4ms4916 KiB
55Elfogadva6ms4916 KiB
56Elfogadva4ms4916 KiB
57Elfogadva330ms31772 KiB
58Elfogadva365ms31872 KiB
59Elfogadva407ms31916 KiB
60Elfogadva505ms32064 KiB
61Elfogadva317ms41892 KiB
62Elfogadva368ms41636 KiB
63Elfogadva409ms41640 KiB
64Elfogadva533ms41496 KiB
65Elfogadva367ms42400 KiB
66Elfogadva342ms42420 KiB
67Elfogadva7ms5356 KiB
68Elfogadva8ms5428 KiB
69Elfogadva7ms5428 KiB
70Elfogadva9ms5172 KiB
71Elfogadva8ms5436 KiB
72Elfogadva8ms5172 KiB
73Elfogadva9ms5400 KiB
74Elfogadva8ms5252 KiB
75Elfogadva8ms5408 KiB
76Elfogadva8ms5204 KiB
77Elfogadva8ms5172 KiB
78Elfogadva8ms5172 KiB
79Elfogadva7ms5428 KiB
80Időlimit túllépés1.101s32180 KiB
81Időlimit túllépés1.101s33188 KiB
82Időlimit túllépés1.101s34980 KiB
83Időlimit túllépés1.1s37028 KiB
84Időlimit túllépés1.077s39080 KiB
85Időlimit túllépés1.077s40608 KiB
86Elfogadva554ms32156 KiB
87Elfogadva532ms41632 KiB
88Elfogadva351ms42408 KiB
89Elfogadva819ms31648 KiB
90Elfogadva842ms31908 KiB
91Időlimit túllépés1.101s31908 KiB
92Időlimit túllépés1.085s31908 KiB
93Időlimit túllépés1.083s33696 KiB
94Időlimit túllépés1.082s36256 KiB
95Időlimit túllépés1.101s38920 KiB
96Időlimit túllépés1.085s32164 KiB
97Időlimit túllépés1.085s32160 KiB
98Időlimit túllépés1.085s32928 KiB
99Időlimit túllépés1.101s32132 KiB
100Időlimit túllépés1.088s33012 KiB
101Időlimit túllépés1.082s34976 KiB