BubbleBee / Zbirka / 04 obilazak_sa_oba_kraja / Zbirka-dvobojka

Postovani Teo,
opet ja korisnik Dusan Vidojevic.Kako si mi ti(ako smem da koristim ti a ne Vi,posto imam samo 11 godina) odgovorio na pitanje za NZD i NZS(koji sam uspeo da resim) molio bih te (Vas) da mi odgovoris(odgovorite) zasto u zadatku “Ispis u obrnutom redu” ne radi grader za prvi test primer,i to ne radi nikome.

Hvala ti(Vam) puno,Dusan.

1 Like

Zdravo Dušane, prebacih tvoju poruku u javni post pa da vide i ostali ljudi.

Jel možeš pls da posaljes link sa BBee na ovaj zadatak pa da pogledam?

P.S. I meni više prija da budemo na ti :slight_smile:

1 Like

Izvini sto si ovako dugo cekao,evo linka:
http://bubblebee.petlja.org/problemi/Zbirka/dvobojka#problem
evo i mog koda:
include
#include
#include <math.h>
using namespace std;
int main()
{
int n,i;
cin>>n;
int niz[n];
for(i=0;i<n;i++)
{
cin>>niz[i];
}
for(i=0;i<n;i++)
{
if(niz[i]%2==0)
{
cout<<niz[i]<<endl;
}
}
for(i=0;i<n;i++)
{
if(niz[i]%2!=0)
{
cout<<niz[i]<<endl;
}
}
return 0;
}

Pozdrav
Dusan

1 Like

Koji rezultat ti javlja sistem?

Inace ovde imas dva prolaza kroz niz (nakon ucitavanja) a trazi se samo jedan prolaz. Elemente prvo učitati u niz, a zatim taj niz transformisati u linearnom vremenu (samo jednim prolazom kroz niz).

incorect output,inace hvala na opomeni.

1 Like

Falio je i iostream heder… Ne znam zasto ovo resenje ne prolazi, pa zovem @Vugdelija u pomoc :slight_smile:

Ni ja “ne umem” da resim ovaj zadatak :smiley: Prilicno sam siguran da checker nije dobro postavljen. Mozda @zmajcek moze da proveri da li ovaj zadatak uopste ima postavljen poseban checker?

Ljudi,meni nije jasno samo kako u linearnom vremenu ispitam.Moze pomoc?

1 Like

Da li mozes da razmislis kako u jednom prolazu kroz niz mozes da izmenis niz, tako da svi parni brojevi ostanu na pocetku a da sve neparne brojeve gurnes na kraj?

Da,razmislio sam,ali mi ne ispisuje potrebno,da li postoji neka komanda za ovu radnju koju si gore naveo?

1 Like

PLS NEKO??
:triumph:

1 Like

:hourglass_flowing_sand::hourglass::watch:

1 Like

Uzmi dve promenljive za indekse i=1 j=n. U svakom koraku pomeraš ka sredini ili i ili j. Kada naiđeš na dva broja koja nisu na svom mestu rotiraj ih. Staješ kada je i=j. Može? :smiley:

1 Like

Da li je to sa jednim prolaskom kroz niz jer je to uslov?

1 Like

Jeste, samo što nećeš ići kroz niz redom od 1 do n nego sa dve strane pa ćeš levo->desno proći k elemenata a desno->levo n-k, što mu u zbiru dođe n. Na ovom principu ti je quick sort, sad ne znam koliko znas o tome, ali sigurno postoji na wikipediji grafički prikaz da ti pojasni. :wink:

2 Likes

Ljudi da li neko molim vas moze da mi napise kod,vec 4-5 dana pokusavam da uradim i nikako ne umem.
Ko kod samo mi odgovorite!!!

1 Like

Moguće da može i lepše da se zapiše, ali radi :smiley:

#include <iostream>
#include <vector>

using namespace std;

void razmeni(int& a, int& b)
{
    int c = a;
    a = b;
    b = c;
}

int main()
{
    int n;
    cin >> n;

    vector<int> v(n);

    for (int i = 0; i < n; i++)
        cin >> v.at(i);

    int i = 0;
    int j = n-1;

   while (i < j)
  {

      while (v.at(i) % 2 == 0 && i<j)
          i++;
      while (v.at(j) % 2 == 1 && i<j)
          j--;
      if (i<j)
      {
          razmeni(v.at(i), v.at(j));
          i++;
          j--;
      }
  }
    for (int i = 0; i < n; i++)
        cout << v.at(i) << endl;

    return 0;
}
1 Like