Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.80 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Lista{
  6. public:
  7. typedef unsigned int wartosc;
  8. private:
  9. struct element{
  10. wartosc wart;
  11. element * nastepny;
  12. element * poprzedni;
  13. };
  14. public:
  15. typedef element* pozycja;
  16. private:
  17. pozycja pierwszy;
  18. pozycja ostatni;
  19. wartosc size=0;
  20. public:
  21.  
  22. //KONSTRUKTOR
  23. Lista()
  24. {
  25. pierwszy=ostatni=NULL;
  26. size=0;
  27. }
  28. //DESTRUKTOR
  29. ~Lista()
  30. {
  31. pozycja pom;
  32. while(pierwszy!=NULL)
  33. {
  34. pom=pierwszy;
  35. pierwszy=pierwszy->nastepny;
  36. delete pom;
  37. }
  38. }
  39. //CZY PUSTA
  40. /* bool empty()
  41. {
  42. if(pierwszy==NULL)
  43. return true;
  44. else
  45. return false;
  46. }*/
  47. //WARTOSC PIERWSZEGO ELEMENTU
  48. wartosc front()
  49. {
  50. return pierwszy->wart;
  51. }
  52. //WARTOSC OSTATNIEGO ELEMENTU
  53. wartosc back()
  54. {
  55. return ostatni->wart;
  56. }
  57. //NOWA WARTOSC NA POCZATEK LISTY
  58. void push_front(wartosc w)
  59. {
  60. pozycja pom=new element;
  61. pom->wart=w;
  62. pom->nastepny=pierwszy;
  63. pom->poprzedni=NULL;
  64. pierwszy=pom;
  65. if(pom->nastepny)
  66. {
  67. pom->nastepny->poprzedni=pom;
  68. }
  69. else
  70. {
  71. ostatni = pom;
  72. }
  73. size++;
  74. }
  75. //NOWA WARTOSC NA KONIEC LISTY
  76. void push_back(wartosc w)
  77. {
  78. if(pierwszy==NULL)
  79. {
  80. push_front(w);
  81. }
  82. else
  83. {
  84. pozycja it=ostatni;
  85. it->nastepny=new element;
  86. it->nastepny->wart=w;
  87. it->nastepny->nastepny=NULL;
  88. it->nastepny->poprzedni=ostatni;
  89. ostatni=it->nastepny;
  90. size++;
  91. }
  92. }
  93. //USUWA PIERWSZY ELEMENT LISTY
  94. void pop_front()
  95. {
  96. pozycja pom=pierwszy;
  97. if(pom->nastepny==NULL)
  98. {
  99. pierwszy=ostatni=NULL;
  100. size=0;
  101. }
  102. else
  103. {
  104. pierwszy=pierwszy->nastepny;
  105. pierwszy->poprzedni=NULL;
  106. size--;
  107. }
  108. }
  109. //USUWA OSTATNI ELEMENT LISTY
  110. void pop_back()
  111. {
  112. pozycja pom;
  113. if(ostatni)
  114. {
  115. pom=ostatni;
  116. if(pom==pierwszy)
  117. {
  118. pierwszy = ostatni = NULL;
  119. size=0;
  120. }
  121. else
  122. {
  123. ostatni=ostatni->poprzedni;
  124. ostatni->nastepny=NULL;
  125. size--;
  126. }
  127. }
  128. }
  129. //WYSWIETL
  130. void get()
  131. {
  132. pozycja t=pierwszy;
  133. for(int i=0;i<size;i++)
  134. {
  135. cout<<t->wart<<" ";
  136. t=t->nastepny;
  137. }
  138. }
  139.  
  140. wartosc dlugosc()
  141. {
  142. return size;
  143. }
  144. };
  145.  
  146. int main()
  147. {
  148. unsigned int *tab,*tab2;
  149. unsigned int N,K,U,Z;
  150. short int k=0,j=0,i,reka;
  151. bool licz=false;
  152. Lista lewa;
  153. Lista prawa;
  154.  
  155. cin>>N;
  156. if(N%2==0)
  157. {
  158. i=1;
  159. while(i<=N/2)
  160. {
  161. lewa.push_back(i);
  162. i++;
  163. }
  164. i=N/2+1;
  165. while(i<=N)
  166. {
  167. prawa.push_back(i);
  168. i++;
  169. }
  170. }
  171. else
  172. {
  173. i=1;
  174. while(i<=N/2+1)
  175. {
  176. lewa.push_back(i);
  177. i++;
  178. }
  179. i=N/2+2;
  180. while(i<=N)
  181. {
  182. prawa.push_back(i);
  183. i++;
  184. }
  185. }
  186. cin>>K>>U;
  187. tab = new unsigned int[U];
  188. i=0;
  189. while(i<U)
  190. {
  191. cin>>tab[i];
  192. i++;
  193. }
  194. cin>>Z;
  195. tab2 = new unsigned int[Z];
  196. i=0;
  197. while(i<Z)
  198. {
  199. cin>>tab2[i];
  200. i++;
  201. }
  202.  
  203. i=1;
  204. while(i<=K)
  205. {
  206. if(i%2==0)
  207. {
  208. if(tab[j]==i)
  209. {
  210. // cout<<"upuszcza pilke"<<endl;
  211. j++;
  212. }
  213. else
  214. {
  215. if(licz)
  216. {
  217. // cout<<"lapie prawa"<<endl;
  218. prawa.push_back(reka);
  219. }
  220. else
  221. {
  222. // cout<<"lapie lewa"<<endl;
  223. lewa.push_front(reka);
  224. }
  225. }
  226. }
  227. else
  228. {
  229. if(tab2[k]==i)
  230. {
  231. // cout<<"zmiana reki"<<endl;
  232. if(licz==false)
  233. {
  234. licz=true;
  235. }
  236. else
  237. {
  238. licz=false;
  239. }
  240. k++;
  241. }
  242.  
  243. if(licz)
  244. {
  245. // cout<<"Wyrzuca z prawej"<<endl;
  246. reka=prawa.front();
  247. prawa.pop_front();
  248. licz=false;
  249. }
  250. else
  251. {
  252. // cout<<"Wyrzuca z lewej"<<endl;
  253. reka=lewa.back();
  254. lewa.pop_back();
  255. licz=true;
  256. }
  257. }
  258. i++;
  259. }
  260. delete [] tab;
  261. delete [] tab2;
  262. lewa.get();
  263. prawa.get();
  264. return 0;
  265. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement