5370 | 2023-04-26 19:07:40 | kohumark | Különböző katicák | cpp17 | Időlimit túllépés 0/100 | 600ms | 130744 KiB |
#include <iostream>
#include <vector>
#include <set>
using namespace std;
vector<vector<int>> con;
set<int> act; set<int> visited;
void actual(int i, int p[], int l){
visited.insert(i);
set<int> now;
for(auto it=con[i].begin(); it!=con[i].end(); it++){
if(p[*it]!=-1){
int a=-l;
while(a!=l){
if(p[*it]+a>=0) now.insert(p[*it]+a);
a+=2;
}
}
if(!visited.count(*it)) actual(*it, p, l+1);
}
//for(auto it=now.begin(); it!=now.end(); it++) cout << *it << '\n';
for(auto it=act.begin(); it!=act.end(); it++) if(!now.count(*it)){act.erase(*it); it=act.begin(); if(act.size()==0) break;}
}
int solve(int i, int p[]){
//cout << '\n' << i << '\n';
visited.insert(i);
for(auto it=con[i].begin(); it!=con[i].end(); it++){
if(p[*it]!=-1){act.insert(p[*it]+1); act.insert(abs(p[*it]-1));}
actual(*it, p, 2);
}
if(act.size()==0) return -1;
int x=*(act.begin()); act.clear(); visited.clear();
return x;
}
int main(){
bool ok=true;
int n; cin >> n;
int p[n]; //f[n];
con.assign(n, vector<int>());
for(int i=0; i<n; i++){
int x; cin >> x;
if(x!=0){con[i].push_back(x-1); con[x-1].push_back(i);}
}
for(int i=0; i<n; i++) cin >> p[i];
for(int i=0; i<n; i++){
if(p[i]==-1) p[i]=solve(i, p);
if(p[i]==-1){ok=false; break;}
}
if(ok){
cout << "IGEN\n";
for(int i=0; i<n; i++){
cout << p[i] << ' ';
}
}
else cout << "NEM";
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
subtask1 | 0/0 | ||||||
1 | Elfogadva | 3ms | 1812 KiB | ||||
2 | Elfogadva | 3ms | 2060 KiB | ||||
3 | Időlimit túllépés | 600ms | 13568 KiB | ||||
subtask2 | 0/10 | ||||||
4 | Hibás válasz | 100ms | 18848 KiB | ||||
5 | Hibás válasz | 112ms | 20700 KiB | ||||
6 | Hibás válasz | 122ms | 22212 KiB | ||||
7 | Hibás válasz | 140ms | 24372 KiB | ||||
subtask3 | 0/15 | ||||||
8 | Futási hiba | 237ms | 130744 KiB | ||||
9 | Futási hiba | 230ms | 130504 KiB | ||||
10 | Futási hiba | 240ms | 130272 KiB | ||||
11 | Futási hiba | 234ms | 130192 KiB | ||||
12 | Futási hiba | 238ms | 129996 KiB | ||||
13 | Futási hiba | 232ms | 129780 KiB | ||||
14 | Hibás válasz | 128ms | 51532 KiB | ||||
subtask4 | 0/35 | ||||||
15 | Hibás válasz | 4ms | 4356 KiB | ||||
16 | Elfogadva | 4ms | 4508 KiB | ||||
17 | Elfogadva | 3ms | 4344 KiB | ||||
18 | Hibás válasz | 3ms | 4472 KiB | ||||
19 | Hibás válasz | 4ms | 4784 KiB | ||||
20 | Hibás válasz | 3ms | 4552 KiB | ||||
21 | Hibás válasz | 4ms | 4704 KiB | ||||
22 | Hibás válasz | 4ms | 4720 KiB | ||||
subtask5 | 0/40 | ||||||
23 | Hibás válasz | 123ms | 23704 KiB | ||||
24 | Időlimit túllépés | 558ms | 16512 KiB | ||||
25 | Elfogadva | 305ms | 27500 KiB | ||||
26 | Hibás válasz | 134ms | 24400 KiB | ||||
27 | Hibás válasz | 370ms | 26116 KiB | ||||
28 | Időlimit túllépés | 560ms | 16456 KiB | ||||
29 | Hibás válasz | 112ms | 25644 KiB | ||||
30 | Hibás válasz | 133ms | 25192 KiB | ||||
31 | Időlimit túllépés | 565ms | 18160 KiB | ||||
32 | Időlimit túllépés | 550ms | 17680 KiB | ||||
33 | Időlimit túllépés | 577ms | 15588 KiB |