# Problem sa checkerom - Ciklično pomeranje za K mesta ulevo (Zbirka)

**URL:** <https://algora.petlja.org/t/problem-sa-checkerom-ciklicno-pomeranje-za-k-mesta-ulevo-zbirka/673>\
**Category:** Pitanja i problemi\
**Created:** [December 3, 2017, 2:40pm UTC](https://algora.petlja.org/t/problem-sa-checkerom-ciklicno-pomeranje-za-k-mesta-ulevo-zbirka/673 "2017-12-03T14:40:54Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![juden](https://algora.petlja.org/letter_avatar_proxy/v4/letter/j/7feea3/32.png) [@juden](https://algora.petlja.org/u/juden)\
**Post date:** [December 3, 2017, 2:40pm UTC](https://algora.petlja.org/t/problem-sa-checkerom-ciklicno-pomeranje-za-k-mesta-ulevo-zbirka/673/1 "2017-12-03T14:40:54Z")

</div>

Kod se može naći na sledećem linku: [http://cpp.sh/5ogs](http://cpp.sh/5ogs)  
Kada je prisutno `#include <algorithm>` dobija se TLE samo na 9. testu, a kada se izbaci dobija se TLE na testovima 4, 6, 7, 8, 9.

Ne bi bilo loše pokazati ulazne vrednosti sa kojima testirate, a ujedno i izlazne vrednosti koje kompajlirani program ispisuje. Tako da ko god ima problem može da reši problem “pešaka”, bez potrebe da se svaki put otvara tema kada nešto ne valja (bilo da li je u pitanju checker, ili kod programa).

---

<div class="post-metadata">

**Author:** ![Delta003](https://algora.petlja.org/user_avatar/algora.petlja.org/delta003/32/275_2.png) [@Delta003](https://algora.petlja.org/u/Delta003)\
**Post date:** [December 4, 2017, 10:00am UTC](https://algora.petlja.org/t/problem-sa-checkerom-ciklicno-pomeranje-za-k-mesta-ulevo-zbirka/673/2 "2017-12-04T10:00:43Z")

</div>

([https://petlja.org/BubbleBee/r/problemi/Zbirka/ciklicko\_pomeranje\_za\_k\_mesta\_ulevo](https://petlja.org/BubbleBee/r/problemi/Zbirka/ciklicko_pomeranje_za_k_mesta_ulevo))  
Zdravo,

Ovde nema nikakvih problema sa checkerom. Pretpostavljam da `<algorithm>` overriduje odredjena default ponasanja i da je zbog toga brze. Ali u svakom slucaju mislim da je TLE ocekivano za ovo resenje. Pogledacu jos malo dublje sta to tacno biblioteka overriduje u ovom kodu pa se izvrsava brze.

Ne razmatramo potpuno otvaranje test primera. Zato sto je debugovanje sastavan deo programiranja i vazno je nauciti kako treba da se radi. Kada dobijas TLE, probaj da generises veliki primer s obzirom da su ti data gornja ogranicenja. Dakle, u ovom slucaju primer sa N = 100k k = 100k i random brojevima. Tvoje resenje ce ovaj primer izvrsavati mozda i nekoliko minuta, zavisi od racunara.

Ako nisi upoznat, pogledaj [Složenost algoritama](https://algora.petlja.org/t/slozenost-algoritama/77)  
Kolika je vremenska slozenost tvog koda? Da li je to dovoljno dobro za ovaj zadatak? To su neka od pitanja na koja treba da odgovoris 🙂

Jasno nam je da ako se greska pojavi i u jednom zadatku, svako ko se duze muci sa zadatkom ce pomisliti da i tu postoji greska. Radimo na tome da sto pre detektujemo i uklonimo sve greske. Do tada, Algora je pravo mesto da resite dilemu da li je zadatak ispravan ili ne u najkracem roku.

---

<div class="post-metadata">

**Author:** ![juden](https://algora.petlja.org/letter_avatar_proxy/v4/letter/j/7feea3/32.png) [@juden](https://algora.petlja.org/u/juden)\
**Post date:** [December 4, 2017, 12:24pm UTC](https://algora.petlja.org/t/problem-sa-checkerom-ciklicno-pomeranje-za-k-mesta-ulevo-zbirka/673/3 "2017-12-04T12:24:05Z")

</div>

Hvala na odgovoru!

U pravu si, o tome nisam razmišljao. Neefikasno je ponavljati K puta std::rotate funkciju kada je K veliki broj.  
Uzeo sam nove C++ standarde “zdravo za gotovo” 😅

Zanima me da li ima na forumu neki post koji objašnjava koja su sve moguća izlazna rešenja zajedno sa njihovim značenjima (WA, TLE, …)?

Rešio sam zadatak. Dodao sam `if` grananje u slučaju kada je `k < n` i tu sam refaktorisao `for` petlju u `std::rotate( elements.begin(), elements.begin() + k, elements.end() );`  
U ostalim slučajevima se koristi `for` petlja.  
Bez grananja dobija se OK na svim testovima sem na prvom, gde se dobija WA, iako su ispunjena vremenska i memorijska ograničenja.

Barem sada znam da nije bitna čitkost koda i da se sledeći put neću uzdati u standard 🙂

---

<div class="post-metadata">

**Author:** ![Delta003](https://algora.petlja.org/user_avatar/algora.petlja.org/delta003/32/275_2.png) [@Delta003](https://algora.petlja.org/u/Delta003)\
**Post date:** [December 4, 2017, 2:36pm UTC](https://algora.petlja.org/t/problem-sa-checkerom-ciklicno-pomeranje-za-k-mesta-ulevo-zbirka/673/4 "2017-12-04T14:36:15Z")

</div>

> [@Koja su značenja statusa koja vraća automatski sistem ocenjivanja?](https://algora.petlja.org/t/koja-su-znacenja-statusa-koja-vraca-automatski-sistem-ocenjivanja/48):
>
> OK - ok (izlaz programa je jednak očekivanom) WA - wrong answer (izlaz programa je različit od očekivanog) TLE - time limit exceeded (program je prekoračio vremensko ograničenje) CE - compilation error (neuspešno kompajliranje) MLE - memory limit exceeded (program je prekoračio memorijsko ograničenje) RTE - run-time error (program nije prekoračio ni vreme ni memoriju ali nije uspešno završio, primeri su dealociranje null pokazivača, deljenje nulom, upisivanje u niz van veličine niza i slično) N…

---

<div class="post-metadata">

**Author:** ![Nenad421](https://algora.petlja.org/user_avatar/algora.petlja.org/nenad421/32/1277_2.png) [@Nenad421](https://algora.petlja.org/u/Nenad421)\
**Post date:** [December 4, 2017, 5:41pm UTC](https://algora.petlja.org/t/problem-sa-checkerom-ciklicno-pomeranje-za-k-mesta-ulevo-zbirka/673/5 "2017-12-04T17:41:33Z")

</div>

> [@Delta003](#):
>
> Ne razmatramo potpuno otvaranje test primera. Zato sto je debugovanje sastavan deo programiranja i vazno je nauciti kako treba da se radi

Bilo bi dobro kada bi imali mogucnost da vidimo kodove drugih korisnika nakon sto dobijemo OK. Ne znam koliko je to na petlji lako/tesko implementirati ali bi bilo dosta korisno. Postoji li sansa da ubacite tu opciju?

---

<div class="post-metadata">

**Author:** ![Delta003](https://algora.petlja.org/user_avatar/algora.petlja.org/delta003/32/275_2.png) [@Delta003](https://algora.petlja.org/u/Delta003)\
**Post date:** [December 4, 2017, 10:56pm UTC](https://algora.petlja.org/t/problem-sa-checkerom-ciklicno-pomeranje-za-k-mesta-ulevo-zbirka/673/6 "2017-12-04T22:56:16Z")

</div>

Razmotricemo tu opciju.

Licno mislim da je dobra ideja 🙂

---

<div class="post-metadata">

**Author:** ![filipmaric](https://algora.petlja.org/user_avatar/algora.petlja.org/filipmaric/32/631_2.png) [@filipmaric](https://algora.petlja.org/u/filipmaric)\
**Post date:** [December 13, 2017, 9:14pm UTC](https://algora.petlja.org/t/problem-sa-checkerom-ciklicno-pomeranje-za-k-mesta-ulevo-zbirka/673/7 "2017-12-13T21:14:17Z")

</div>

Čini mi se da si izvukao potpuno pogrešan zaključak. Čitljivost koda možda nije presudna u takmičarskom programiranju (jer se jedino ocenjuju test primeri), ali ako kod pišeš nečitko teško da ćeš se sam snaći u većim zadacima, tako da svakako treba uvek da obraćaš pažnju na čitljivost. Takođe, ne znam kako si izvukao zaključak da je ovde u pitanju bilo kakav problem sa standardom. Jedini razlog zašto si dobio TLE je to što si koristio loš algoritam (to je isto kao da x i y sabirao tako što bi u petlji y puta na x dodavao 1) i nema nikakve veze ni sa čitljivošću ni sa jezikom i njegovim standardom. Inače, veoma interesantno za ovaj zadatak je to što imamo njegovih 10 različitih rešenja 🙂 Jedno (najlepše) je to koje koristi bibliotečku funkciju std::rotate, međutim, ono je algoritamski najmanje ilustrativno. Ako hoćeš da vežbaš, moj ti je savet da probaš da pronađeš bar još tri različita rešenja ovog zadatka “peške” (pokušaj da zadržiš dobru vremensku složenost, i da izbegneš korišćenje dodatne memorije).

---

<div class="post-metadata">

**Author:** ![filipmaric](https://algora.petlja.org/user_avatar/algora.petlja.org/filipmaric/32/631_2.png) [@filipmaric](https://algora.petlja.org/u/filipmaric)\
**Post date:** [December 13, 2017, 9:20pm UTC](https://algora.petlja.org/t/problem-sa-checkerom-ciklicno-pomeranje-za-k-mesta-ulevo-zbirka/673/8 "2017-12-13T21:20:18Z")

</div>

Još jedna mala napomena. Za sve zadatke u Zbirci dovoljno je koristiti tipove int, double, string i bool. U drugom tomu koji se priprema bice potreban jos i long long. Izlete u int32\_t i uintptr\_t nije potrebno praviti.

---

<div class="post-metadata">

**Author:** ![juden](https://algora.petlja.org/letter_avatar_proxy/v4/letter/j/7feea3/32.png) [@juden](https://algora.petlja.org/u/juden)\
**Post date:** [December 14, 2017, 5:13pm UTC](https://algora.petlja.org/t/problem-sa-checkerom-ciklicno-pomeranje-za-k-mesta-ulevo-zbirka/673/9 "2017-12-14T17:13:52Z")

</div>

Jesam, što sam tek shvatio kada mi je @Delta003 odgovorio. Uvideo sam da je greška u mom pristupu algoritmima, sa kojima sam imao relativno malo iskustva i shvatio da moram pročitati “Uvod u algoritme”.

Nisam se dovoljno jasno izrazio po pitanju standarda. Na brzinu sam pročitao par primera i objašnjenje sa [http://en.cppreference.com/w/cpp/algorithm/rotate](http://en.cppreference.com/w/cpp/algorithm/rotate) i mislio sam da će samo zameniti mesta dva elementa, a ne pointer do njih.

Što se tiče tipova, znam da se ne moraju koristiti u zbirci, ali su mi ušli u naviku 😃

---

<div class="post-metadata">

**Author:** ![sr.zivk](https://algora.petlja.org/user_avatar/algora.petlja.org/sr.zivk/32/405_2.png) [@sr.zivk](https://algora.petlja.org/u/sr.zivk)\
**Post date:** [December 14, 2017, 7:56pm UTC](https://algora.petlja.org/t/problem-sa-checkerom-ciklicno-pomeranje-za-k-mesta-ulevo-zbirka/673/10 "2017-12-14T19:56:59Z")

</div>

Da ne otvaram novu temu, imam problem sa checkerom na zadatku

> **[Petlja](https://petlja.org/biblioteka/r/Problems/NICEORDER1)**
>
> Fondacija Petlja je osnovana sa ciljem unapređivanja algoritamske pismenosti u Srbiji

 ![](https://algora.petlja.org/uploads/default/original/1X/46005cda18fd65443140abbc34cc12a29a354d30.png)  
Daje RTE, čak i za praznu main()

---

<div class="post-metadata">

**Author:** ![Delta003](https://algora.petlja.org/user_avatar/algora.petlja.org/delta003/32/275_2.png) [@Delta003](https://algora.petlja.org/u/Delta003)\
**Post date:** [December 14, 2017, 10:26pm UTC](https://algora.petlja.org/t/problem-sa-checkerom-ciklicno-pomeranje-za-k-mesta-ulevo-zbirka/673/11 "2017-12-14T22:26:04Z")

</div>

Hvala! Vec smo upoznati sa ovim problemom!

Nema veze sa ovim zadatkom. Grader daje RTE kad god korisnicki kod ne napravi nikakav izlaz.
