Izgubljeni niz
View as PDFProfesor Feđa, strastveni ribolovac i obožavalac ronjenja na dah, pronašao je svoj 14. omiljeni hobi - zaboravljanje nizova. Ova novootkrivena disciplina teče na sledeći način:
Na početku, Feđa zamisli niz sa
prirodnih brojeva. Nakon toga on na papiru zapiše niz
sa tačno
brojeva. Članovi niza
su dobijeni primenom bitovne operacije
(videti napomenu) na sve parove brojeva iz niza
, preciznije:
Za svaki uređeni par indeksa (), (
) iz niza
u nizu
je zapisana vrednost
. Ako je neka vrednost ista za više parova, ona se u nizu
pojaljuje tačno onoliko puta koliko ima parova sa tom vrednošću. Ove vrednosti se u nizu
mogu javiti u proizvoljnom redosledu.
Naravno, profesor se umorio nakon zapisivanja svih ovih brojeva i u potpunosti zaboravio prvobitno zamišljeni niz . Srećom na papiru mu je ostao zapisan niz
. Da li možete da pomognete našem dragom profesoru i pronađete izgubljeni niz
?
Opis ulaza
U prvoj liniji standardnog ulaza nalazi se jedan prirodan broj , dužina izgubljenog niza
.
U drugoj liniji standardnog ulaza nalazi se
prirodnih brojeva, elementi niza
opisanog u tekstu zadatka.
Opis izlaza
U jedinoj liniji standardnog izlaza ispisati prirodnih brojeva, elemente izgubljenog niza
. Garantuje se da su ulazni podaci takvi da postoji bar jedan odgovarajući niz. Ako postoje više mogućih nizova, ispisati bilo koje rešenje.
Primer 1
Ulaz
3
5 4 2 3 1 6
Izlaz
1 4 2
Objašnjenje primera
Izgubljeni niz ima
člana i treba ga pronaći koristeći niz
. Jedan od mogućih nizova je
. Ako primenimo bitovnu operaciju
na sve parove brojeva u nizu
dobijamo:
Ograničenja
U svim test primerima važe ograničenja
Test primeri su podeljeni u disjunktne grupe:
- U test primerima vrednim
poena važe ograničenja
i
.
- U test primerima vrednim
poena važi ograničenje
.
- U test primerima vrednim
poena nema dodatnih ograničenja.
Napomena
Operator disjunkcije u Pascal-u je označen sa or, dok u C++ ga zapisujemo pomoću simbola |. Ova operacija se za nenegativne cele brojeve
definiše na sledeći način. Prvo se brojevi zapišu u binarnom zapisu. Ukoliko jedan broj ima manje cifara od drugog, dopisuju mu se vodeće nule sve dok ne budu imali isti broj binarnih cifara. Tako se dobijaju dva niza binarnih cifara, označimo ih sa
i
. Zatim se za svaku poziciju
računa
pomoću sledećih pravila:
- Za
važi
- Za
važi
- Za
važi
- Za
važi
Niz binarnih cifara (koji možda ima vodeće nule) je binarni zapis rezultata, odnosno broja
.
Comments