Šetnja


Submit solution

Points: 100
Time limit: 1.0s
Memory limit: 500M

Author:
Problem type
Allowed languages
Assembly, Awk, C, C++, Java, Perl, Python

U ulici jorgovana nalazi se N kuća poredanih slijeva nadesno označenih redom prirodnim brojevima od 1 do N. Mirko se trenutno nalazi kod kuće s oznakom X i želi doći do kuće s oznakom Y. Smije se kretati lijevo i desno, odnosno kad se nalazi kod neke kuće može otići do jedne od najviše dviju susjednih kuća

Budući da voli duge noćne šetnje po mjesečini i pod zvjezdanim nebom, te zavirivanje u tuđa dvorišta odlučio je šetati od kuće X do kuće Y na način da kuću s oznakom i posjeti točno Ai puta.

Mirku baš i ne ide snalaženje u prostoru pa te moli da osmisliš takvu šetnju umjesto njega. I šetnje koje ne posjete svaku kuću traženi broj puta donijet će neki broj bodova pa pozorno promotri sekciju BODOVANJE.

Ulazni podaci

U prvom retku redom nalaze se prirodni brojevi N (1 ≤ N ≤ 100 000), X (1 ≤ XN) i Y (1 ≤ YN), brojevi iz teksta zadatka.

U drugom retku nalazi se niz od N prirodnih brojeva Ai (1 ≤ Ai ≤ 100 000), niz iz teksta zadatka. Zbroj A1 + A2+ … + An bit će manji ili jednak 100 000.

Izlazni podaci

U prvom retku ispiši broj K (1 ≤ K ≤ 200 000), duljinu tvoje predložene šetnje.

U drugom retku ispiši niz od K prirodnih brojeva Bk (1 ≤ Bk ≤ 100 000, k=1..K) koji opisuju Mirkovu šetnju, tj. redom one kuće koje će Mirko posjetiti.

Da bi ispis bio valjan mora vrijediti:

  • B1 = X jer mora krenuti od X-te kuće;
  • BK = Y jer mora završiti kod Y-te kuće;
  • |Bi - B(i-1)| = 1 za i=2,…, K jer se u svakom koraku smije i mora pomaknuti do susjedne kuće

Ulazni podaci bit će takvi da rješenje postoji.

Bodovanje

Broj bodova računa se na sljedeći način:

Svaki primjer zasebno nosi 4 boda.

Ako je K > 200 000 ili nije zadovoljen neki od ostalih kriterija iz sekcije IZLAZNI PODACI broj bodova na tom primjeru bit će 0.

Neka Vi označava broj prolazaka kraj i-te kuće u ispisanoj šetnji, tj. Vi je broj pojavljivanja broja i u ispisanom nizu B. Neka je P zbroj apsolutnih razlika pripadnih članova nizova A i V, tj. P = |A1 - V1| + |A2 - V2| + … + |An - Vn|.

Ako je P = 0, tj. ako je u ispisanoj šetnji svaka kuća posjećena traženi broj puta dobit ćete sva 4 boda.

Inače broj osvojenih bodova iznosi 3 ∗ √(1/P) zaokružen na dva decimalna mjesta.

Nadalje, u test podacima ukupno vrijednima 12 bodova, vrijedit će A1+ A2+ … + An ≤ 20.

U test podacima ukupno vrijednima dodatnih 8 bodova, vrijedit će A1+ A2+ … + An ≤ 35.

U test podacima ukupno vrijednima dodatnih 12 bodova, brojevi A1, A2,…, An bit će manji ili jednaki 2.

U test podacima ukupno vrijednima dodatnih 8 bodova, vrijedit će X = 1 i Y = N.

Probni primjeri

Ulaz
3 2 2
1 3 1
Izlaz
5
2 3 2 1 2

Ulaz
5 1 5
1 1 1 1 1
Izlaz
5
1 2 3 4 5

Ulaz
6 3 4
1 2 3 4 3 1
Izlaz
14
3 4 5 6 5 4 3 2 1 2 3 4 5 4

Opis trećeg probnog primjera:

Mirko će redom posjetiti kuće 3, 4, 5, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4. Na taj način krenut će od treće i završit u četvrtoj kao što je i želio. Prvu kuću posjetit će jednom, drugu dva puta, treću tri puta, četvrtu četiri puta, petu tri puta i šestu jednom.


Comments

There are no comments at the moment.