Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 8th, 2012  |  syntax: None  |  size: 1.90 KB  |  hits: 14  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include <iostream>
  2. #include <vector>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. struct Blok
  8. {
  9.     int redni_broj;
  10.     Blok *sljedeci;
  11. };
  12.  
  13. int main()
  14. {
  15.     cout<<"          Stranka Pohlepnih Gulikoza\n"<<endl;
  16.     vector<int> Razbrajanje(int N, int M);
  17.     int OdabirKoraka(int N, int K);
  18.     int N, K;
  19.     cout<<"Unesite broj blokova Vaseg grada: ";
  20.     cin>>N;
  21.     cout<<endl;
  22.     cout<<"U kojem se bloku nalazi Vasa stranka: ";
  23.     cin>>K;
  24.     cout<<endl;
  25.     if (K>N)
  26.         cout<<"Pogresan unos!"<<endl;
  27.     cout<<"Gospodine Hapo Kradibasicu, najbolje je da redom svaki "<<OdabirKoraka(N, K)<<". blok bude iskljucivan! "<<endl;
  28.     return 0;
  29. }
  30.  
  31. vector<int> Razbrajanje(int N, int M)
  32. {
  33.     Blok *pocetak(0), *prethodni;
  34.     for (int i=1; i<=N; i++)
  35.     {
  36.         Blok *novi(new Blok);
  37.         novi->redni_broj=i;
  38.         novi->sljedeci=pocetak;
  39.         if (pocetak!=0)
  40.             prethodni->sljedeci=novi;
  41.         else
  42.             pocetak=novi;
  43.         prethodni=novi;
  44.     }
  45.     vector<int> vektor;
  46.     Blok *p(pocetak);
  47.     Blok *(pok);
  48.     vektor.push_back(p->redni_broj);
  49.     for (;;)
  50.     {
  51.         for (int i=1; i<M; i++)
  52.         {
  53.             p=p->sljedeci;
  54.             if (p->sljedeci->redni_broj==1)
  55.             {
  56.                 pok=p->sljedeci;
  57.                 p->sljedeci=pok->sljedeci;
  58.                 delete pok;
  59.                 pok=0;
  60.             }
  61.         }
  62.         int t(p->sljedeci->redni_broj);
  63.         vektor.push_back(t);
  64.         if (vektor.size()==N)  break;
  65.         pok=p->sljedeci;
  66.         Blok *k(p->sljedeci->sljedeci);
  67.         p->sljedeci=k;
  68.         pok->sljedeci=pocetak;
  69.         delete pok;
  70.         pok=0;
  71.     }
  72.     return vektor;
  73. }
  74.  
  75. int OdabirKoraka (int n, int k)
  76. {
  77.     vector<int> v;
  78.     for (int j=1; j<=100000; j++)
  79.     {
  80.         v=Razbrajanje(n, j);
  81.         if (v[v.size()-1]==k)
  82.             return j;
  83.     }
  84.     return 0;
  85. }