Editorial for PrefMexSuf
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Posmatrajmo vrednosti prefiksa. Označimo
-tu od njih sa
. Primetimo da te vrednosti moraju da budu neopadajuće, inače nema rešenja. Takođe, primetimo da, kako su te vrednosti
-ovi
brojeva, one moraju biti manje od
. Neka je
. Tada očigledno mora da važi
, jer se vrednost
ne pojavljuje u prefiksu dužine
, a pojavljuje se u prefiksu dužine
. Reći ćemo da smo onda fiksirali pojavljivanje vrednosti
u prefiksu na poziciji
. Takođe, primetimo da vrednosti u intervalu
, moraju postojati u prefiksu dužine
. Slično ponovimo i za sufikse.
Primetimo sada da za svaku vrednost manju od koja se pojavljuje u našem nizu imamo u kom prefiksu i u kom sufiksu ona mora da se pojavi. Neka je najveći indeks do kojeg neka vrednost mora da se pojavi da bi uslovi
-a prefiksa bili ispunjeni
, a najmanji indeks za sufiks
. Neka je dodatno
, ukoliko je pojavljivanje te vrednosti u prefiksu fiksirano, a
, ukoliko je pojavljivanje te vrednosti u sufiksu fiksirano. Posmatrajmo za svaku vrednost
za koju nismo ispunili uslove pojavljivanja u prefiksu i u sufiksu (vrednosti za koje ti uslovi jesu ispunjeni su one za koje su fiksirana oba pojavljivanja ili one za koje jedno fiksirano pojavljivanje ispunjava uslove drugog) sledeće slučajeve:
- Pojavljivanje u prefiksu nije fiksirano i
. Tada ovu vrednost postavimo na najmanju poziciju u nizu na kojoj nije postavljena neka druga vrednost.
- Pojavljivanje u sufiksu nije fiksirano i
. Tada ovu vrednost postavimo na najveću poziciju u nizu na kojoj nije postavljena neka druga vrednost.
- Pojavljivanje nije fiksirano ni u prefiksu ni u sufiksu i
. Tada postavimo vrednost na bilo koju poziciju u intervalu
, koja nije zauzeta. Ukoliko takva pozicija ne postoji, postavimo tu vrednost na najmanju poziciju koja nije zauzeta i najveću poziciju koja nije zauzeta.
Možemo da primetimo da će vrednosti biti rastuće, a vrednosti
opadajuće. Zbog toga, kada
, optimalno je postaviti vrednosti na najmanju i najveću poziciju. Ukoliko je
, možemo da primetimo da za svaku vrednost
, za koju
i za koju
, važi da
, tj. intervali će biti ugnježdeni. Zbog toga možemo na pohlepan način da postavljamo vrednosti u tom intervalu. Takođe, primetimo da postavljanje vrednosti na najmanje i najveće pozicije ne remeti postavljanje u intervale, jer ukoliko bi zbog postavljanja vrednosti na najmanju poziciju neki interval ceo bio zauzet, onda bi on, zbog uslova da
raste bio zauzet gde god mi postavili tu vrednost.
Konačno, ukoliko na nekoj poziciji u nizu nismo postavili vrednost, na tu poziciju možemo da postavimo proizvoljnu vrednost veću od .
Comments