paltry

train_schedule

Apr 10th, 2015
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.06 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<iostream>
  5. using namespace std;
  6. #include<vector>
  7. #include<set>
  8.  
  9. int nA, nB, *A=NULL, *B=NULL, N, Acnt = 0, Bcnt = 0;
  10. vector <pair<int, int>> * vAG;
  11. vector <pair<int, int>> * vBG;
  12. void sort(int * ar, int size)
  13. {
  14. int i, j;
  15. for (i = 0; i < size; i+=2)
  16. {
  17. for (j = i + 2; j < size; j += 2)
  18. {
  19. if (ar[j] < ar[i])
  20. {
  21. int temp = ar[i];
  22. ar[i] = ar[j];
  23. ar[j] = temp;
  24. temp = ar[i + 1];
  25. ar[i + 1] = ar[j + 1];
  26. ar[j + 1] = temp;
  27. }
  28. }
  29. }
  30. }
  31. int checkLessB(int);
  32. int checkLessA(int i)
  33. {
  34. printf("\nlessA");
  35. int j = 0;
  36. //while ((*vAG).begin() + j != (*vBG).end())
  37. while (j < (*vAG).size() && (*vAG).size() > 0 && i < (*vBG).size() && (*vBG).size() > 0)
  38. {
  39. printf("\nwhile");
  40. if ((*vBG)[i].second <= (*vAG)[j].first)
  41. {
  42. checkLessB(j);
  43. (*vAG).erase((*vAG).begin() + j);
  44.  
  45. return 1;
  46. }
  47. j++;
  48. }
  49. return 0;
  50. }
  51. int checkLessB(int i)
  52. {
  53. printf("\nlessB");
  54. int j = 0;
  55. //while ((*vBG).begin() + j != (*vBG).end())
  56. while (j < (*vBG).size() && (*vBG).size() > 0 && i < (*vAG).size() && (*vAG).size() > 0)
  57. {
  58. if ((*vAG)[i].second <= (*vBG)[j].first)
  59. {
  60. checkLessA(j);
  61. (*vBG).erase((*vBG).begin() + j);
  62.  
  63. return 1;
  64. }
  65. j++;
  66. }
  67. return 0;
  68. }
  69.  
  70. int max(int a, int b)
  71. {
  72. return a>b ? a : b;
  73. }
  74. int main()
  75. {
  76. int i, j, k, T, a,p;
  77. FILE * f;
  78. f= freopen("C:\\B-small-practice.in","r",stdin);
  79. // f = freopen("C:\\out","w",stdout);
  80. scanf("%d", &N);
  81. for (i = 0; i < N; i++)
  82. {
  83. Acnt = Bcnt = 0;
  84. scanf("%d %d %d", &T,&nA,&nB);
  85. if (nA >0)
  86. A = (int*) malloc(sizeof(int) * nA * 2);
  87. if (nB>0)
  88. B = (int*) malloc(sizeof(int) * nB * 2);
  89. char buf[50];
  90. char one[5];
  91. char two[5];
  92. for (j = 0; j < nA*2; j++)
  93. {
  94. if (j==0)
  95. gets(buf);
  96. gets(buf);
  97. int l=0;
  98. for (k = 0; k < strlen(buf); k++)
  99. {
  100. if (k<5)
  101. {
  102. if (buf[k] != ':')
  103. one[l++] = buf[k];
  104. else
  105. continue;
  106. }
  107. if (k == 5)
  108. {
  109. one[l] = '\0';
  110. l = 0;
  111. }
  112. else if (k > 5)
  113. {
  114. if (buf[k] != ':')
  115. two[l++] = buf[k];
  116. else
  117. continue;
  118. }
  119. if (k == 10)
  120. two[l] = '\0';
  121. }
  122. A[j++] = atoi(one);
  123. A[j] = atoi(two);
  124. A[j] += T;
  125. }
  126. for (j = 0; j < nB*2; j++)
  127. {
  128. gets(buf);
  129. int l = 0;
  130. for (k = 0; k < strlen(buf); k++)
  131. {
  132. if (k<5)
  133. {
  134. if (buf[k] != ':')
  135. one[l++] = buf[k];
  136. else
  137. continue;
  138. }
  139. if (k == 5)
  140. {
  141. one[l] = '\0';
  142. l = 0;
  143. }
  144. else if (k > 5)
  145. {
  146. if (buf[k] != ':')
  147. two[l++] = buf[k];
  148. else
  149. continue;
  150. }
  151. if (k == 10)
  152. two[l] = '\0';
  153. }
  154. B[j++] = atoi(one);
  155. B[j] = atoi(two);
  156. B[j] += T;
  157. }
  158. sort(A, nA*2);
  159. sort(B, nB*2);
  160. vector <pair<int, int>> vA(nA);
  161. vector <pair<int, int>> vB(nB);
  162. vAG = &vA;
  163. vBG = &vB;
  164. for (j = 0,k=0; j < nA * 2; j+=2,k++)
  165. {
  166. vA[k].first = A[j];
  167. vA[k].second = A[j + 1];
  168. }
  169. for (j = 0,k=0; j < nB * 2; j += 2,k++)
  170. {
  171. vB[k].first = B[j];
  172. vB[k].second = B[j + 1];
  173. }
  174. printf("\n%d----------", i + 1);
  175. for (j = 0; j < nA; j++)
  176. {
  177. printf("%d,", vA[j].first);
  178. printf("%d,", vA[j].second);
  179. }
  180. printf("\n");
  181. for (j = 0; j < nB; j++)
  182. {
  183. printf("%d,", vB[j].first);
  184. printf("%d,", vB[j].second);
  185. }
  186. /*Inputs done .now find the answer.*/
  187.  
  188. p = 0; k = 0; j = 0;
  189. while (vA.size() > 0 || vB.size() > 0)
  190. {
  191. p++;
  192. if (vA.size() > 0 && vB.size() > 0 && vA[0].first < vB[0].first)
  193. {
  194. Acnt++;
  195. checkLessB(0);
  196. vA.erase(vA.begin());
  197. }
  198. else if (vA.size() >0 && vB.size() > 0 && vA[0].first > vB[0].first)
  199. {
  200. Bcnt++;
  201. checkLessA(0);
  202. vB.erase(vB.begin());
  203. }
  204. else if (vA.size() > 0 && vB.size() == 0)
  205. {
  206. Acnt++;
  207. vA.erase(vA.begin());
  208. }
  209. else if (vB.size() > 0 && vA.size() == 0)
  210. {
  211. Bcnt++;
  212. vB.erase(vB.begin());
  213. }
  214. }
  215. printf("Case #%d: %d %d\n", i+1, Acnt, Bcnt);
  216. }
  217.  
  218.  
  219. scanf("%d",&a);
  220. return 0;
  221. }
Advertisement
Add Comment
Please, Sign In to add comment