петак, 9. март 2018.

Takmicenje iz programiranja 2018 - Okruzno - Pripreme - Cas 02 - Okruzno 2017 - Zadatak 01

Dragi takmičari,
 
Na današnjem času priprema za okružno rešavali smo prvi zadatak sa prošlogodišnjeg okružnog takmičenja 1. Krompir:
Naše današnje rešenje zadatka je u prilogu i trebalo bi da prođe skoro sve test primere.
 
Obratite pažnju na sledeće:
  • Deklaracija promenljive za matricu A (počeli smo 10x10, a tek na kraju postavili na 100000000 x 100000000).
  • Deklaracija promenljivih za nizove početnih stanja krompira x i y (počeli smo 100, a tek na kraju postavili 100000000).
  • Tipove podataka svih promenljivih, kako običnih tako i elemenata nizova i matrice (sve vreme radili i testirali sa Integer, a tek pred kraj prepravili na LongInt).
  • Učitavanje početnih koordinata krompira (x[k] i y[k]) i brojač početnih pozicija krompira k koji ide od 1 do M.
  • Inicijalno postavljanje vrednosti svih elemenata matrice na 0.
  • Inicijalno postavljanje vrednosti svih početnih pozicija krompira na 1: A [ x [k], y [k] ] := 1;.
  • Štampanje svih elemenata matrice zbog testiranja i provere, a tek na kraju smo isključili ove naredbe.
  • Ključni deo programa (u sredini) - spoljna petlja po k (po početnim pozicijama krompira), u kojoj su 2 petlje, jedna koja postavlja sve elemente matrice u istom redu na 1, i druga koja postavlja sve elemente matrice u istoj koloni na 1 i njihove naredbe:
    A [ x [ k ], j ] := 1 i
    A [ i, y [ k ] ] := 1
  • Sabiranje svih vrednosti elemenata matrice.
Naravno, zadatak je mogao da se reši i drugačije. Ovo rešenje nije potpuno optimizovano, naročito ne vremenski, ali daje tačne rezultate i pokriva sva navedena ograničenja opsega vrednosti.
 
Pozdrav,
Dragan Ilić


Нема коментара: