Advertisement
Guest User

Untitled

a guest
Feb 18th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.77 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct element_dysku
  6. {
  7.  
  8. string d2;//s
  9. int d3;//c
  10. element_dysku *next=nullptr;
  11. element_dysku *prev=nullptr;
  12. };
  13.  
  14. class SmallerList
  15. {
  16. public:
  17. element_dysku *begin=nullptr;
  18. element_dysku *end=nullptr;
  19. int size=0;
  20.  
  21. void push_back(string e2, int e3)
  22. {
  23. if(size==0)
  24. {
  25. element_dysku *a2=new element_dysku;
  26. a2->d2=e2;
  27. a2->d3=e3;
  28. a2->next=a2;
  29. a2->prev=a2;
  30. end=begin=a2;
  31. size=1;
  32. }
  33. else if(size>0)
  34. {
  35. element_dysku *a2=new element_dysku;
  36. a2->d2=e2;
  37. a2->d3=e3;
  38. a2->next=begin;
  39. begin->prev=a2;
  40. end->next=a2;
  41. a2->prev=end;
  42. end=a2;
  43. size++;
  44. }
  45. }
  46. void pop_front()
  47. {
  48. if(size>1)
  49. {
  50. element_dysku *a4;
  51. a4=begin;
  52. begin=begin->next;
  53. end->next=begin;
  54. begin->prev=end;
  55. delete a4;
  56. size--;
  57. }
  58. else if(size==1)
  59. {
  60. delete begin;
  61. begin=end=nullptr;
  62. size--;
  63. }
  64. }
  65.  
  66. };
  67. struct listeczka
  68. {
  69. SmallerList *l1=nullptr;
  70. listeczka *next=nullptr;
  71. listeczka *prev=nullptr;
  72. };
  73. class BiggerList
  74. {
  75. public:
  76. listeczka *begin=nullptr;
  77. listeczka *end=nullptr;
  78. int SizeBig=0;
  79. void push_back(SmallerList *l)
  80. {
  81. if(SizeBig==0)
  82. {
  83. listeczka *a2=new listeczka;
  84. a2->l1=l;
  85. a2->next=a2;
  86. a2->prev=a2;
  87. begin = end = a2;
  88. SizeBig=1;
  89. }
  90. else
  91. {
  92. listeczka *a3=new listeczka;
  93. a3->l1=l;
  94. end->next=a3;
  95. a3->prev=end;
  96. a3->next=begin;
  97. begin->prev=a3;
  98. end=a3;
  99. SizeBig++;
  100. }
  101. }
  102. void pop_front()
  103. {
  104. if(SizeBig>1)
  105. {
  106. listeczka *a4;
  107. a4=begin;
  108. begin=begin->next;
  109. begin->prev=end;
  110. end->next=begin;
  111. delete a4;
  112. SizeBig--;
  113. }
  114. else if(SizeBig==1)
  115. {
  116. begin=end=nullptr;
  117. SizeBig--;
  118. }
  119. }
  120.  
  121. };
  122. void funkcja(BiggerList *l3, int *tab_h, int *tab_l, int l, int h, int sek)
  123. {
  124. listeczka *k=l3->begin;
  125. while(l3->SizeBig>0 && sek<h && l>0)
  126. {
  127. bool f1=true;
  128. while(f1)
  129. {
  130. f1=false;
  131. if(l==0 || l3->SizeBig==0)
  132. return;
  133. int suma=0;
  134. for(int size=0; size<l3->SizeBig; size++)
  135. {
  136. suma+=l3->begin->l1->begin->d3;
  137. if(l3->begin->next->l1->size!=0)
  138. l3->begin=l3->begin->next;
  139. }
  140. for(int i=0; i<l; i++)
  141. {
  142. if(tab_l[i]==suma)
  143. {
  144. tab_l[i]=0;
  145. f1=1;
  146. cout<<suma<<" ";
  147. for(int size=0; size<l3->SizeBig;)
  148. {
  149. cout<<l3->begin->l1->begin->d2;
  150. l3->begin->l1->pop_front();
  151. if(l3->begin->l1->size==0)
  152. {
  153. l3->pop_front();
  154. }
  155. else
  156. {
  157. size++;
  158. l3->begin=l3->begin->next;
  159. }
  160. }
  161. cout << endl;
  162. }
  163. }
  164.  
  165.  
  166. }
  167. int sek1;
  168. int sek2;
  169. sek1=tab_h[2*sek];
  170. sek2=tab_h[(2*sek)+1];
  171. if(l==0 || l3->SizeBig==0 || sek==h)
  172. return;
  173. sek++;
  174. if(sek1<0)
  175. {
  176. sek1=abs(sek1);
  177. sek1=sek1%l3->SizeBig;
  178. for(int i=0; i<sek1; i++)
  179. {
  180. k=k->prev;
  181. }
  182. }
  183. else if(sek1>0)
  184. {
  185. sek1=sek1%l3->SizeBig;
  186. for(int i=0; i<sek1; i++)
  187. {
  188. k=k->next;
  189. }
  190.  
  191.  
  192. }
  193. if(sek2<0)
  194. {
  195. sek2=abs(sek1);
  196. sek2=sek2%k->l1->size;
  197. for(int i=0; i<sek2; i++)
  198. {
  199. k->l1->begin=k->l1->begin->prev;
  200. }
  201. }
  202. else if(sek2>0)
  203. {
  204. sek2=sek2%k->l1->size;
  205. for(int i=0; i<sek2; i++)
  206. {
  207. k->l1->begin=k->l1->begin->next;
  208. }
  209. }
  210. }
  211.  
  212. }
  213.  
  214. int main()
  215. {
  216.  
  217.  
  218. int How_many_disks;
  219. int How_many_Indisk;
  220. int How_many_sum;
  221. int How_many_seq;
  222. string forString;
  223. int ForInt;
  224. cin>>How_many_disks;
  225. BiggerList* BigList =new BiggerList;
  226. for(int i=0; i<How_many_disks; i++)
  227. {
  228.  
  229. cin>>How_many_Indisk;
  230. SmallerList *mniejsza=new SmallerList;
  231. for(int j=0; j<How_many_Indisk; j++)
  232. {
  233. cin>>forString>>ForInt;
  234. mniejsza->push_back(forString,ForInt);
  235. }
  236.  
  237. BigList->push_back(mniejsza);
  238. }
  239. cin>>How_many_sum;
  240. int *SumArr=new int[How_many_sum];
  241. for(int i=0; i<How_many_sum; i++)
  242. {
  243. cin>>SumArr[i];
  244. }
  245. cin>>How_many_seq;
  246. int *SeqArr=new int[2*How_many_seq];
  247. for(int i=0; i<How_many_seq; i++)
  248. {
  249. cin>>SeqArr[2*i]>>SeqArr[(2*i)+1];
  250. }
  251. funkcja(BigList, SeqArr, SumArr, How_many_sum, How_many_seq, 0);
  252.  
  253. /*cout << endl;
  254. for(int i=0; i<2*n; i++)
  255. {
  256. cout << l3->begin->l1->size;
  257. l3->begin=l3->begin->next;
  258. }*/
  259. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement