Soal Implementasi dalam C dan C++ Implementasi dalam Pascal

advertisement
APIO2016
7thMay2016
RepublicofKorea
gap
Language:id_ID
Celah
Terdapat buahbilanganbulatnon-negatif
yangmemenuhipertidaksamaan
.Jeehakinginmenemukannilaitertinggiyangmungkindari
yangmananilai berkisardari hingga
.Bilangan-bilanganpadamasukantidak
akandiberikanlangsungkeprogramJeehak,melainkandapatdiperolehdaripemanggilansuatufungsi
khusus.LihatbagianImplementasidalambahasapemrogramanpilihanAndauntukketeranganlebih
lanjut.
Soal
BantulahJeehakuntukmengimplementasikansebuahfungsiyangmengembalikannilaitertinggiyang
mungkindari
yangmananilai berkisardari hingga
.
ImplementasidalamCdanC++
AndadimintauntukmengimplementasikansebuahfungsifindGap(T,N)yangmenerima
parameter-parameterberikutdanmengembalikansebuahbilanganbulatdengantipedatalonglong:
T—nomorsubsoal(1atau2)
N—banyaknyabilanganbulatyangdiberikan
FungsifindGapAndadapatmemanggilfungsiMinMax(s,t,&mn,&mx) dimanaduaparameter
pertamasdantmerupakanvariabeldengantipedatalonglongsertaduaparameterterakhir&mn
dan&mxmerupakanpointeruntukvariabeldengantipedatalonglong,dengankatalain,mndanmx
merupakanvariabeldengantipedatalonglong.KetikafungsiMinMax(s,t,&mn,&mx)
dikembalikan,variabelmnakanberisinilai terkecilyanglebihbesaratausamadengannilaisdan
variabelmxakanberisinilai terbesaryanglebihkecilatausamadengannilait.Padakasustidak
adasatupunbilangan-bilanganpadamasukanyangberadadiantarasdant(inklusif),makakedua
variabelmndanmxakanberisinilai-1.NilaistidakbolehlebihbesardarinilaitketikaMinMax
dipanggil.Jikakondisiinitidakdipenuhi,programakandihentikandengansebuahnon-zeroexitcode.
ImplementasidalamPascal
AndadimintauntukmengimplementasikansebuahfungsifindGap(T,N)yangmenerima
parameter-parameterberikutdanmengembalikansebuahbilanganbulatdengantipedataInt64:
T—nomorsubsoal(1atau2)(dengantipedataInteger)
N—banyaknyabilanganbulatyangdiberikan(dengantipedataLongInt)
FungsifindGapAndadapatmemanggilfungsiMinMax(s,t,mn,mx) dimanaduaparameter
pertamasdantmerupakanvariabeldengantipedataInt64sertaduaparameterterakhirmndanmx
merupakanparameteracuan(byreference)darivariabeldengantipedataInt64,dengankatalain,
mndanmxmerupakanvariabeldengantipedataInt64.KetikafungsiMinMax(s,t,mn,mx)
selesai,variabelmnakanberisinilai terkecilyanglebihbesaratausamadengannilaisdanvariabel
1/3
mxakanberisinilai terbesaryanglebihkecilatausamadengannilait.Padakasustidakadasatu
punbilangan-bilanganpadamasukanyangberadadiantarasdant(inklusif),makakeduavariabelmn
danmxakanberisinilai-1.NilaistidakbolehlebihbesardarinilaitketikaMinMaxdipanggil.Jika
kondisiinitidakdipenuhi,programakandihentikan.
Implementasiuntuksemua
Selaindarisyarat-syaratstandar(batasanwaktudanmemori,tidakruntimeerror,dll),programyang
Andakumpulkanjugaharusmemenuhisyarat-syarattambahanberikutuntukdapatmenyelesaikan
sebuahkasusuji:
fungsifindGapAndaharusmengembalikanjawabanyangbenar,
nilai yangberhubungandenganpemanggilanfungsiMinMaxtidakbolehmelebihibatasan
yangditentukan(lihatbagianPenilaian).
ContohuntukCdanC++
Tinjaukasusdimananilai
serta
,dan
.
Jawabanuntukkasustersebut,yakni ,dapatdihitungdandikembalikanolehfungsifindGapjika
pemanggilanfungsiMinMaxberikutdilakukan:
MinMax(1,2,&mn,&mx) dipanggilsehinggamndanmxkeduanyaberisinilai .
MinMax(3,7,&mn,&mx) dipanggilsehinggamnberisinilai danmxberisinilai .
MinMax(8,9,&mn,&mx) dipanggilsehinggamndanmxkeduanyaberisinilai .
ContohuntukPascal
Tinjaukasusdimananilai
serta
,dan
.
Jawabanuntukkasustersebut,yakni ,dapatdihitungdandikembalikanolehfungsifindGapjika
pemanggilanfungsiMinMaxberikutdilakukan:
MinMax(1,2,mn,mx) dipanggilsehinggamndanmxkeduanyaberisinilai .
MinMax(3,7,mn,mx) dipanggilsehinggamnberisinilai danmxberisinilai .
MinMax(8,9,mn,mx) dipanggilsehinggamndanmxkeduanyaberisinilai .
Penilaian
Untuksemuasubsoal,berlaku
.
Subsoal1(30poin):SetiappemanggilanfungsiMinMaxakanmenambahkannilai kedalam
Andaakanmenerimanilaipenuhuntuksubsoaliniapabila
untuksemuakasusuji.
.
Subsoal2(70poin):Dimisalkan adalahbanyaknyabilangan-bilanganpadamasukanyanglebih
besaratausamadengansdanlebihkecilatausamadengantpadasebuahpemanggilanfungsi
MinMax.SetiappemanggilanfungsiMinMaxakanmenambahkannilai
kedalam .Nilaiakhir
akandihitungdenganaturanberikut:NilaiakhiruntuksubsoalinimerupakannilaiminimumyangAnda
perolehdiantarasemuakasusujiyangdiberikan.Untuksebuahkasusuji,nilaiyangdiperolehadalah70
2/3
apabila
dannilaiyangdiperolehadalah
,jikatidak.
Percobaan
Samplegraderyangdapatdiunduhdarisistempenilaianakanmembacadatadaristandarmasukan.
Barispertamadarimasukanberisiduabuahbilanganbulat,nomorsubsoal ,dan .Barisberikutnya
berisi buahbilanganbulatyangterurutmenaik.Samplegraderakanmenuliskestandarkeluaran
sebuahnilaiyangdikembalikanolehfungsifindGapdibarispertamadannilaidari sesuaidengan
subsoaldimanakasusujitersebutberada.
Masukanberikutmendeskripsikancontohdiatas:
24
2368
3/3
Download