Напомена: ово је незванична копија задатака. Као таква, не гарантује се да ће овај сајт бити одржаван, и немојте се изненадити ако са њега задаци одједном нестану.

Дат вам је низ \(A\) од \(N\) тачака у координатној равни. Дата је и тачка \(P\). Потребно је да одговорите на \(Q\) упита. Сваки упит је описан са по два броја \(L\) и \(R\). Нека је \(S\) скуп тачака \(\{A_L, A_{L+1}, \dots A_R\}\). Дозвољено је примењивати следећу операцију произвољан број пута: узети две тачке \(H\) и \(K\) из скупа \(S\) и у скуп додати једну од тачака које се налазе на дужи \(HK\). Одговор на упит је Da ако тачка \(P\) може да се нађе у скупу \(S\) након нула или више потеза, или Ne у супротном.

Обратите пажњу на то да се координате тачака у низу \(A\) могу поклапати као и да се координате тачке \(P\) могу поклапати са координатама тачкака из низа \(A\).

Описи функција

Потребно је да имплементирате функцију

где је:

Сви низови су индексирани од 1.

Ограничења

Подзадаци

Тест примери су подељени у 7 подзадатака:

Детаљи имплементације

Потребно је да пошаљете тачно један фајл tacke.cpp који имплементира поменуту функцију. Осим тражене функције, ваш фајл може садржати и додатне глобалне променљиве, помоћне функције и додатне библиотеке.

Ваша функција мора бити следећег облика:

void Resi(int N, int Px, int Py, int *X, int *Y, int Q, int *L, int *R, bool *O);

Вашим програмима је дозвољено да мењају садржај низова, али не смеју да приступају ван њихових граница.

Уз задатак обезбеђен вам је “template” фајл code.cpp који можете користити и мењати по потреби. Такође вам је обезбеђен програм grader.cpp који служи да лакше тестирате кодове. Овај програм учитава са стандардног улаза следеће податке:

Затим овај програм позива вашу функцију и штампа одговоре на упите на стандардни излаз, по један у сваком реду. Ако је ваша функција уписала true као вредност \(O_i\), у \(i\)-том реду ће се одштампати Da, а у супротном, у \(i\)-том реду ће се одштампати Ne.

Пример

Улаз

5 1 2
0 0
0 3
3 3
3 0
0 0
4
1 3
3 5
2 4
1 5

Излаз

Da
Ne
Da
Da

Објашњење