Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Lista{
- public:
- typedef unsigned int wartosc;
- private:
- struct element{
- wartosc wart;
- element * nastepny;
- element * poprzedni;
- };
- public:
- typedef element* pozycja;
- private:
- pozycja pierwszy;
- pozycja ostatni;
- wartosc size=0;
- public:
- //KONSTRUKTOR
- Lista()
- {
- pierwszy=ostatni=NULL;
- }
- //DESTRUKTOR
- ~Lista()
- {
- pozycja pom;
- while(pierwszy!=NULL)
- {
- pom=pierwszy;
- pierwszy=pierwszy->nastepny;
- delete pom;
- }
- }
- //CZY PUSTA
- bool empty()
- {
- if(pierwszy==NULL)
- return true;
- else
- return false;
- }
- //WARTOSC PIERWSZEGO ELEMENTU
- wartosc front()
- {
- return pierwszy->wart;
- }
- //WARTOSC OSTATNIEGO ELEMENTU
- wartosc back()
- {
- return ostatni->wart;
- }
- //NOWA WARTOSC NA POCZATEK LISTY
- void push_front(wartosc w)
- {
- pozycja pom=new element;
- pom->wart=w;
- pom->nastepny=pierwszy;
- pom->poprzedni=NULL;
- pierwszy=pom;
- if(!ostatni)
- ostatni=pierwszy;
- size++;
- cout<<"Operacja Push_front "<<endl;
- }
- //NOWA WARTOSC NA KONIEC LISTY
- void push_back(wartosc w)
- {
- if(pierwszy==NULL)
- {
- push_front(w);
- }
- else
- {
- pozycja it=ostatni;
- it->nastepny=new element;
- it->nastepny->wart=w;
- it->nastepny->nastepny=NULL;
- it->nastepny->poprzedni=ostatni;
- ostatni=it->nastepny;
- size++;
- }
- cout<<"Operacja Push_back "<<endl;
- }
- //USUWA PIERWSZY ELEMENT LISTY
- void pop_front()
- {
- pozycja pom=pierwszy;
- if(pom->nastepny==NULL)
- {
- pierwszy=ostatni=NULL;
- size=0;
- }
- else
- {
- pierwszy=pierwszy->nastepny;
- pierwszy->poprzedni=NULL;
- size--;
- }
- delete pom;
- cout<<"Operacja pop_front "<<endl;
- }
- //USUWA OSTATNI ELEMENT LISTY
- void pop_back()
- {
- pozycja pom;
- if(ostatni)
- {
- pom=ostatni;
- if(pom==pierwszy)
- {
- pierwszy = ostatni = NULL;
- size=0;
- }
- else
- {
- ostatni=ostatni->poprzedni;
- ostatni->nastepny=NULL;
- size--;
- }
- cout<<"Operacja Push_back "<<endl;
- }
- delete pom;
- }
- //WYSWIETL
- void get()
- {
- pozycja temp=pierwszy;
- for(int i=0;i<size;i++)
- {
- cout<<temp->wart<<" ";
- temp = temp->nastepny;
- }
- }
- wartosc dlugosc()
- {
- return size;
- }
- };
- int main()
- {
- unsigned int reka,N,i,K,U,Z,j=0,k=0;
- bool licz=false;
- Lista lewa;
- Lista prawa;
- cin>>N>>K>>U;
- int* tab = new int[U];
- for(i=0;i<U;i++)
- {
- cin>>tab[i];
- }
- cin>>Z;
- int* tab2 = new int[Z];
- for(i=0;i<Z;i++)
- {
- cin>>tab2[i];
- }
- if(N%2==0)
- {
- for(i=1;i<=N/2;i++)
- {
- lewa.push_back(i);
- }
- for(i=N/2+1;i<=N;i++)
- {
- prawa.push_back(i);
- }
- }
- else
- {
- for(i=1;i<=N/2+1;i++)
- {
- lewa.push_back(i);
- }
- for(i=N/2+2;i<=N;i++)
- {
- prawa.push_back(i);
- }
- }
- for(i=1;i<=K;i++)
- {
- cout<<"Ilosc kul "<<lewa.dlugosc()+prawa.dlugosc()<<endl;
- cout<<"wyswietl reke"<<endl;
- lewa.get();
- cout<<endl;
- prawa.get();
- cout<<endl;
- if(i%2==0)
- {
- if(tab[j]==i)
- {
- cout<<"upuszcza pilke"<<endl;
- j++;
- }
- else
- {
- if(licz)
- {
- cout<<"lapie prawa"<<endl;
- prawa.push_back(reka);
- }
- else
- {
- cout<<"lapie lewa"<<endl;
- lewa.push_front(reka);
- }
- }
- }
- else
- {
- if(tab2[k]==i)
- {
- cout<<"zmiana reki"<<endl;
- if(licz==false)
- {
- licz=true;
- }
- else
- {
- licz=false;
- }
- }
- if(licz)
- {
- cout<<"Wyrzuca z prawej"<<endl;
- reka=prawa.front();
- prawa.pop_front();
- licz=false;
- }
- else
- {
- cout<<"Wyrzuca z lewej"<<endl;
- reka=lewa.back();
- lewa.pop_back();
- licz=true;
- }
- }
- }
- cout<<lewa.dlugosc()+prawa.dlugosc();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement