
Untitled
By: a guest on
May 8th, 2012 | syntax:
None | size: 1.90 KB | hits: 14 | expires: Never
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
struct Blok
{
int redni_broj;
Blok *sljedeci;
};
int main()
{
cout<<" Stranka Pohlepnih Gulikoza\n"<<endl;
vector<int> Razbrajanje(int N, int M);
int OdabirKoraka(int N, int K);
int N, K;
cout<<"Unesite broj blokova Vaseg grada: ";
cin>>N;
cout<<endl;
cout<<"U kojem se bloku nalazi Vasa stranka: ";
cin>>K;
cout<<endl;
if (K>N)
cout<<"Pogresan unos!"<<endl;
cout<<"Gospodine Hapo Kradibasicu, najbolje je da redom svaki "<<OdabirKoraka(N, K)<<". blok bude iskljucivan! "<<endl;
return 0;
}
vector<int> Razbrajanje(int N, int M)
{
Blok *pocetak(0), *prethodni;
for (int i=1; i<=N; i++)
{
Blok *novi(new Blok);
novi->redni_broj=i;
novi->sljedeci=pocetak;
if (pocetak!=0)
prethodni->sljedeci=novi;
else
pocetak=novi;
prethodni=novi;
}
vector<int> vektor;
Blok *p(pocetak);
Blok *(pok);
vektor.push_back(p->redni_broj);
for (;;)
{
for (int i=1; i<M; i++)
{
p=p->sljedeci;
if (p->sljedeci->redni_broj==1)
{
pok=p->sljedeci;
p->sljedeci=pok->sljedeci;
delete pok;
pok=0;
}
}
int t(p->sljedeci->redni_broj);
vektor.push_back(t);
if (vektor.size()==N) break;
pok=p->sljedeci;
Blok *k(p->sljedeci->sljedeci);
p->sljedeci=k;
pok->sljedeci=pocetak;
delete pok;
pok=0;
}
return vektor;
}
int OdabirKoraka (int n, int k)
{
vector<int> v;
for (int j=1; j<=100000; j++)
{
v=Razbrajanje(n, j);
if (v[v.size()-1]==k)
return j;
}
return 0;
}