4626 | 2023-03-30 12:55:30 | gortomi | Legkisebb nem osztható | cpp17 | Hibás válasz 10/100 | 1.564s | 42128 KiB |
#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > g;
int tim = 0;
vector<int> l, r;
void dfs(int n, int p)
{
l[n] = tim++;
for(auto x : g[n]) if(x != p) dfs(x, n);
r[n] = tim++;
}
struct val
{
int l, r, ind;
};
bool comp(val a, val b)
{
return a.l / 350 < b.l / 350 || (a.l / 350 == b.l / 350 && a.r < b.r);
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
vector<int> prim;
vector<bool> ip(1e6 + 1, 1);
vector<int> pl(1e6 + 1);
g.resize(n + 1);
l.resize(n + 1);
r.resize(n + 1);
for(int i = 2; i <= 1e6; i++)
{
if(ip[i])
{
pl[i] = prim.size();
prim.push_back(i);
for(int j = 2 * i; j <= 1e6; j += i)
{
ip[j] = 0;
}
}
}
vector<int> v(n + 1, 1e6 + 1);
for(int i = 1; i <= n; i++)
{
int x;
cin >> x;
if(ip[x]) v[i] = pl[x];
}
for(int i = 0; i < n - 1; i++)
{
int x, y;
cin >> x >> y;
g[x].push_back(y);
g[y].push_back(x);
}
dfs(1, 0);
vector<int> path(2 * n);
for(int i = 1; i <= n; i++)
{
path[l[i]] = i;
path[r[i]] = i;
}
int q;
cin >> q;
vector<val> que(q + 1);
que[0] = {0, -1, 0};
vector<int> ans(q);
for(int i = 1; i <= q; i++)
{
int x, y;
cin >> x >> y;
que[i].l = r[x];
que[i].r = l[y];
if(que[i].l > que[i].r)
{
que[i].l = r[y];
que[i].r = l[x];
}
que[i].ind = i - 1;
}
sort(que.begin(), que.end(), comp);
const int b = 350;
vector<int> sq(b);
vector<int> db(n + 1);
vector<bool> act(n + 1);
for(int i = 1; i <= q; i++)
{
for(int j = que[i - 1].l - 1; j >= que[i].l; j--)
{
int y = path[j];
int x = v[y];
if(x > n) continue;
if(!act[y])
{
act[y] = 1;
db[x]++;
if(db[x] == 1) sq[x / b]++;
}
else
{
act[y] = 0;
db[x]--;
if(db[x] == 0) sq[x / b]--;
}
}
for(int j = que[i - 1].r + 1; j <= que[i].r; j++)
{
int y = path[j];
int x = v[y];
if(x > n) continue;
if(!act[y])
{
act[y] = 1;
db[x]++;
if(db[x] == 1) sq[x / b]++;
}
else
{
act[y] = 0;
db[x]--;
if(db[x] == 0) sq[x / b]--;
}
}
for(int j = que[i - 1].l; j <= que[i].l - 1; j++)
{
int y = path[j];
int x = v[y];
if(x > n) continue;
if(!act[y])
{
act[y] = 1;
db[x]++;
if(db[x] == 1) sq[x / b]++;
}
else
{
act[y] = 0;
db[x]--;
if(db[x] == 0) sq[x / b]--;
}
}
for(int j = que[i - 1].r; j >= que[i].r + 1; j--)
{
int y = path[j];
int x = v[y];
if(x > n) continue;
if(!act[y])
{
act[y] = 1;
db[x]++;
if(db[x] == 1) sq[x / b]++;
}
else
{
act[y] = 0;
db[x]--;
if(db[x] == 0) sq[x / b]--;
}
}
for(int j = 0; j < b; j++)
{
if(sq[j] < b)
{
for(int k = 0; k < b; k++)
{
if(db[j * b + k] == 0)
{
ans[que[i].ind] = j * b + k;
break;
}
}
break;
}
}
}
for(auto x : ans) cout << prim[x] << "\n";
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
subtask1 | 0/0 | ||||||
1 | Elfogadva | 17ms | 11076 KiB | ||||
subtask2 | 0/5 | ||||||
2 | Hibás válasz | 17ms | 11292 KiB | ||||
3 | Hibás válasz | 17ms | 11484 KiB | ||||
4 | Hibás válasz | 17ms | 11716 KiB | ||||
5 | Elfogadva | 17ms | 11924 KiB | ||||
6 | Elfogadva | 18ms | 12268 KiB | ||||
7 | Elfogadva | 18ms | 12612 KiB | ||||
8 | Elfogadva | 18ms | 12684 KiB | ||||
9 | Elfogadva | 18ms | 12708 KiB | ||||
10 | Hibás válasz | 19ms | 12796 KiB | ||||
11 | Hibás válasz | 19ms | 12804 KiB | ||||
subtask3 | 0/5 | ||||||
12 | Elfogadva | 17ms | 12780 KiB | ||||
13 | Hibás válasz | 17ms | 12868 KiB | ||||
14 | Hibás válasz | 17ms | 13132 KiB | ||||
15 | Elfogadva | 17ms | 13216 KiB | ||||
16 | Elfogadva | 18ms | 13376 KiB | ||||
17 | Elfogadva | 18ms | 13596 KiB | ||||
18 | Elfogadva | 18ms | 13612 KiB | ||||
19 | Elfogadva | 18ms | 13400 KiB | ||||
20 | Hibás válasz | 19ms | 13400 KiB | ||||
21 | Hibás válasz | 19ms | 13588 KiB | ||||
subtask4 | 0/10 | ||||||
22 | Hibás válasz | 35ms | 15200 KiB | ||||
23 | Hibás válasz | 136ms | 19248 KiB | ||||
24 | Elfogadva | 248ms | 27652 KiB | ||||
25 | Hibás válasz | 402ms | 34288 KiB | ||||
26 | Hibás válasz | 569ms | 38584 KiB | ||||
27 | Hibás válasz | 537ms | 38028 KiB | ||||
subtask5 | 0/10 | ||||||
28 | Hibás válasz | 50ms | 15084 KiB | ||||
29 | Hibás válasz | 181ms | 18200 KiB | ||||
30 | Hibás válasz | 620ms | 25176 KiB | ||||
31 | Hibás válasz | 1.223s | 30252 KiB | ||||
32 | Hibás válasz | 1.536s | 32128 KiB | ||||
33 | Hibás válasz | 1.564s | 32276 KiB | ||||
subtask6 | 10/10 | ||||||
34 | Elfogadva | 18ms | 14096 KiB | ||||
35 | Elfogadva | 32ms | 16052 KiB | ||||
36 | Elfogadva | 87ms | 20252 KiB | ||||
37 | Elfogadva | 193ms | 28484 KiB | ||||
38 | Elfogadva | 289ms | 36868 KiB | ||||
39 | Elfogadva | 358ms | 37376 KiB | ||||
40 | Elfogadva | 356ms | 40612 KiB | ||||
41 | Elfogadva | 372ms | 37500 KiB | ||||
subtask7 | 0/15 | ||||||
42 | Elfogadva | 18ms | 14196 KiB | ||||
43 | Elfogadva | 35ms | 15532 KiB | ||||
44 | Elfogadva | 104ms | 19388 KiB | ||||
45 | Elfogadva | 264ms | 25584 KiB | ||||
46 | Elfogadva | 485ms | 30964 KiB | ||||
47 | Elfogadva | 560ms | 32688 KiB | ||||
48 | Elfogadva | 561ms | 32680 KiB | ||||
49 | Elfogadva | 552ms | 32672 KiB | ||||
50 | Hibás válasz | 620ms | 32700 KiB | ||||
51 | Hibás válasz | 153ms | 36540 KiB | ||||
52 | Hibás válasz | 156ms | 29176 KiB | ||||
53 | Hibás válasz | 180ms | 35344 KiB | ||||
54 | Hibás válasz | 150ms | 36628 KiB | ||||
55 | Hibás válasz | 156ms | 29424 KiB | ||||
56 | Elfogadva | 1.511s | 29424 KiB | ||||
subtask8 | 0/20 | ||||||
57 | Hibás válasz | 37ms | 16044 KiB | ||||
58 | Elfogadva | 87ms | 20712 KiB | ||||
59 | Hibás válasz | 165ms | 24780 KiB | ||||
60 | Hibás válasz | 488ms | 30504 KiB | ||||
61 | Elfogadva | 435ms | 39384 KiB | ||||
62 | Elfogadva | 361ms | 41664 KiB | ||||
63 | Hibás válasz | 568ms | 38052 KiB | ||||
64 | Hibás válasz | 556ms | 38880 KiB | ||||
65 | Hibás válasz | 174ms | 42016 KiB | ||||
66 | Hibás válasz | 165ms | 42128 KiB | ||||
subtask9 | 0/25 | ||||||
67 | Hibás válasz | 43ms | 15752 KiB | ||||
68 | Elfogadva | 92ms | 18900 KiB | ||||
69 | Hibás válasz | 206ms | 22252 KiB | ||||
70 | Hibás válasz | 644ms | 26056 KiB | ||||
71 | Elfogadva | 537ms | 32540 KiB | ||||
72 | Elfogadva | 558ms | 32692 KiB | ||||
73 | Hibás válasz | 1.182s | 32668 KiB | ||||
74 | Hibás válasz | 837ms | 32676 KiB | ||||
75 | Hibás válasz | 671ms | 32668 KiB | ||||
76 | Hibás válasz | 838ms | 32760 KiB | ||||
77 | Hibás válasz | 893ms | 32676 KiB | ||||
78 | Hibás válasz | 742ms | 32700 KiB | ||||
79 | Hibás válasz | 912ms | 32676 KiB | ||||
80 | Elfogadva | 374ms | 36392 KiB | ||||
81 | Elfogadva | 405ms | 36428 KiB | ||||
82 | Hibás válasz | 179ms | 41740 KiB | ||||
83 | Hibás válasz | 976ms | 37852 KiB |