Mendeteksi Molekul - International Olympiad in Informatics

advertisement
InternationalOlympiadinInformatics2016
12-19thAugust2016
Kazan,Russia
day1_1
molecules
Country:IDN
MendeteksiMolekul
Petrbekerjapadasebuahperusahaanyangmembuatsebuahmesinuntuk
mendeteksihimpunanmolekul.Tiapmolekulmempunyaibobotberupabilangan
integerpositif.Mesintersebutmempunyaisuaturentangpendeteksian [l, u] ,
dengan l dan u berupabilanganintegerpositif.Mesindapatmendeteksisuatu
himpunanmolekuljikadanhanyajikahimpunaninimemuatsebuahsubhimpunan
molekuldengantotalbobotsesuaidenganrentangpendeteksiantersebut.
Secaraformal,terdapat n molekuldenganbobotberupabilanganintegerpositif
w0 , … , wn−1
.Pendeteksiandikatakanberhasiljikaterdapatsebuahhimpunan
denganindeks-indeksyangsalingberbeda I
l ≤ wi1 + … + wim ≤ u .
= {i1 , … , im } sedemikiansehingga
Berdasarkanspesifikasimesindiatas,makaselisihantara l dan u dijaminlebih
besaratausamadenganselisihbobotantaramolekulterberatdanterringan.Secara
formal, u − l ≥ wmax − wmin ,dengan wmax = max(w0 , … , wn−1 ) dan
wmin = min(w0 , … , wn−1 ) .
TugasAndaadalahmenuliskansebuahprogramuntukmenentukanapakahada
sebuahsubhimpunanmolekulsebarangdengantotalbobotberadapadarentang
pendeteksianyangsudahditentukanatautidak.
RincianImplementasi
Andaharusmengimplementasikansebuahfungsi(method):
int[]s o lve (intl,intu,int[]w)
ldanu:titik-titikujungsuaturentangpendeteksian,
w:himpunanbobotdarimolekul.
jikaterdapatsubhimpunanyangsesuaidenganspesifikasimesin,maka
fungsitersebutharusmengembalikansebuaharrayberisiindeksdari
molekul-molekulyangmembentuksubhimpunantersebut.Jikaterdapat
beberapajawabanyangbenar,makafungsitersebutdapatmengembalikan
sebarangjawaban.
jikatidakterdapatsatupunsubhimpunanyangmemenuhispesifikasi
tersebut,makafungsitersebutharusmengembalikansebuaharraykosong.
ProgramAndadapatmenuliskanindeksdenganurutansebarangpadaarray
pengembalian.
Gunakanfiletemplateyangsudahdisediakanuntukimplementasirincidaribahasa
1/2
pemrogramanyangAndapakai.
Contoh
Contoh1
s o lve (15,17,[6,8,8,7])
Padacontohdiatasterdapatempatmolekuldenganbobot6,8,8dan7.Mesindapat
mendeteksisubhimpunandengantotalbobotantara15and17,inklusif.Catatan,
17 − 15 ≥ 8 − 6 .Totalbobotmolekul1dan3is w1 + w3 = 8 + 7 = 15 ,sehingga
fungsidanmengembalikan[1,3].Kemungkinanjawabanbenaryanglainadalah[1,
2]( w1
+ w2 = 8 + 8 = 16 )dan[2,3]( w2 + w3 = 8 + 7 = 15 ).
Contoh2
s o lve (14,15,[5,5,6,6])
Padacontohdiatasterdapatempatmolekuldenganbobot5,5,6dan6,dankitaakan
mencarisubhimpunandengantotalbobotantara14dan15,inklusif.Catatan,
15 − 14 ≥ 6 − 5 .Tidakterdapatsatupunsubhimpunanmolekuldengantotalbobot
antara 14 dan 15 sehinggafungsiharusmengembalikansebuaharraykosong.
Contoh3
s o lve (10,20,[15,17,16,18])
Padacontohdiatasterdapatempatmolekuldenganbobot15,17,16dan18,dankita
akanmencarisubhimpunandengantotalbobotantara10dan20,inklusif.Catatan,
20 − 10 ≥ 18 − 15 .Sebarangsubhimpunanyangmempunyaitepatsatuelemen
memilikijumlahbobotantara10dan20,sehinggakemungkinanjawabanyangbenar
adalah:[0],[1],[2]dan[3].
Subtask
1. (9poin): 1 ≤ n
≤ 100 , 1 ≤ wi ≤ 100 , 1 ≤ u, l ≤ 1000 ,semua wi sama.
2. (10poin): 1 ≤ n ≤ 100 , 1 ≤ wi , u, l ≤ 1000 dan
max(w0 , … , wn−1 ) − min(w0 , … , wn−1 ) ≤ 1 .
3. (12poin): 1 ≤ n ≤ 100 dan 1 ≤ wi , u, l ≤ 1000 .
4. (15poin): 1 ≤ n ≤ 10 000 dan 1 ≤ wi , u, l ≤ 10 000 .
5. (23poin): 1 ≤ n ≤ 10 000 dan 1 ≤ wi , u, l ≤ 500 000 .
6. (31poin): 1 ≤ n ≤ 200 000 dan 1 ≤ wi , u, l < 231 .
Grader
Gradermembacamasukandenganformatberikut:
baris1:bilanganinteger n , l , u .
baris2: n bilanganinteger: w0 , … , wn−1 .
2/2
Download