Advertisement
Guest User

Tempp

a guest
Jan 18th, 2020
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.12 KB | None | 0 0
  1. #include <tcframe/spec.hpp>
  2. #include <bits/stdc++.h>
  3.  
  4. using namespace tcframe;
  5. using namespace std;
  6.  
  7. const int MAX_MALE = 1000;
  8. const int MAX_FEMALE = 1000;
  9.  
  10. class ProblemSpec : public BaseProblemSpec {
  11. protected:
  12. int T;
  13.  
  14. int A, B, K;
  15. string res;
  16.  
  17. void InputFormat() {
  18. LINE(A, B, K);
  19. }
  20.  
  21. void OutputFormat() {
  22. LINE(res); // "mustahil" if there is no solution
  23. }
  24.  
  25. void StyleConfig() {
  26. CustomScorer();
  27. }
  28.  
  29. void MultipleTestCasesConfig() {
  30. Counter(T);
  31. }
  32.  
  33. void MultipleTestCasesConstraints() {
  34. CONS(1 <= T && T <= 20);
  35. }
  36.  
  37. void Constraints() {
  38. CONS(1 <= B && B <= MAX_FEMALE);
  39. CONS(1 <= K && K <= B);
  40. }
  41.  
  42. void Subtask1() {
  43. CONS(0 <= A && A <= 1);
  44. }
  45.  
  46. void Subtask2() {
  47. CONS(0 <= A && A <= MAX_MALE);
  48. }
  49. };
  50.  
  51. class TestSpec : public BaseTestSpec<ProblemSpec> {
  52. protected:
  53. void SampleTestCase1() {
  54. Subtasks({1, 2});
  55. Input({"0 4 4"});
  56. Output({"PPPP"});
  57. }
  58.  
  59. void SampleTestCase2() {
  60. Subtasks({1, 2});
  61. Input({"0 4 3"});
  62. Output({"mustahil"});
  63. }
  64.  
  65. void SampleTestCase3() {
  66. Subtasks({1, 2});
  67. Input({"1 3 3"});
  68. Output({"LPPP"});
  69. }
  70.  
  71. void SampleTestCase4() {
  72. Subtasks({2});
  73. Input({"3 3 3"});
  74. Output({"LPPLPL"});
  75. }
  76.  
  77. // Exhaustive for small
  78. void TestGroup1() {
  79. Subtasks({1, 2});
  80.  
  81. // Combination of A = [0, 2], B = [1, 4], K = [1, B]
  82. CASE(A = 0, B = 1, K = 1);
  83. CASE(A = 0, B = 2, K = 1);
  84. CASE(A = 0, B = 2, K = 2);
  85. CASE(A = 0, B = 3, K = 1);
  86. CASE(A = 0, B = 3, K = 2);
  87. CASE(A = 0, B = 3, K = 3);
  88. CASE(A = 0, B = 4, K = 1);
  89. CASE(A = 0, B = 4, K = 2);
  90. // CASE(A = 0, B = 4, K = 3); (included as sample)
  91. // CASE(A = 0, B = 4, K = 4); (included as sample)
  92. CASE(A = 1, B = 1, K = 1);
  93. CASE(A = 1, B = 2, K = 1);
  94. CASE(A = 1, B = 2, K = 2);
  95. CASE(A = 1, B = 3, K = 1);
  96. CASE(A = 1, B = 3, K = 2);
  97. // CASE(A = 1, B = 3, K = 3); (included as sample)
  98. CASE(A = 1, B = 4, K = 1);
  99. CASE(A = 1, B = 4, K = 2);
  100. CASE(A = 1, B = 4, K = 3);
  101. CASE(A = 1, B = 4, K = 4);
  102.  
  103. }
  104.  
  105. // Corners for small
  106. void TestGroup2() {
  107. Subtasks({1, 2});
  108.  
  109. // Mustahil
  110. CASE(A = 0, B = MAX_FEMALE, K = 1);
  111.  
  112. // Large cases
  113. CASE(A = 0, B = MAX_FEMALE, K = MAX_FEMALE);
  114. CASE(A = 0, B = MAX_FEMALE, K = MAX_FEMALE - 1);
  115. CASE(A = 1, B = MAX_FEMALE, K = MAX_FEMALE);
  116. CASE(A = 1, B = MAX_FEMALE, K = (MAX_FEMALE + 1) / 2);
  117. CASE(A = 1, B = MAX_FEMALE, K = MAX_FEMALE - 1);
  118. CASE(A = 1, B = MAX_FEMALE - 1, K = MAX_FEMALE - 1);
  119. CASE(A = 1, B = MAX_FEMALE - 1, K = MAX_FEMALE / 2);
  120. CASE(A = 1, B = MAX_FEMALE - 1, K = MAX_FEMALE / 2 - 1);
  121.  
  122. // Misc.
  123. CASE(A = 1, B = 4, K = 2);
  124. CASE(A = 1, B = 5, K = 2); // mustahil
  125. CASE(A = 1, B = 5, K = 3);
  126. CASE(A = 1, B = 5, K = 4);
  127.  
  128. // Random
  129. CASE(A = 1, B = rnd.nextInt(0, MAX_FEMALE), K = rnd.nextInt(0, B));
  130. CASE(A = 1, B = rnd.nextInt(0, MAX_FEMALE), K = rnd.nextInt(0, B));
  131. }
  132.  
  133. // Exhaustive for large, pt. 0
  134. void TestGroup3() {
  135. Subtasks({2});
  136.  
  137. // Combination of A = [2, 2], B = [2, 6], K = [1, B]
  138. CASE(A = 2, B = 2, K = 1);
  139. CASE(A = 2, B = 2, K = 2);
  140. CASE(A = 2, B = 3, K = 1);
  141. CASE(A = 2, B = 3, K = 2);
  142. CASE(A = 2, B = 3, K = 3);
  143. CASE(A = 2, B = 4, K = 1);
  144. CASE(A = 2, B = 4, K = 2);
  145. CASE(A = 2, B = 4, K = 3);
  146. CASE(A = 2, B = 4, K = 4);
  147. CASE(A = 2, B = 5, K = 1);
  148. CASE(A = 2, B = 5, K = 2);
  149. CASE(A = 2, B = 5, K = 3);
  150. CASE(A = 2, B = 5, K = 4);
  151. CASE(A = 2, B = 5, K = 5);
  152. CASE(A = 2, B = 6, K = 1);
  153. CASE(A = 2, B = 6, K = 2);
  154. CASE(A = 2, B = 6, K = 3);
  155. CASE(A = 2, B = 6, K = 4);
  156. CASE(A = 2, B = 6, K = 5);
  157. CASE(A = 2, B = 6, K = 6);
  158. }
  159.  
  160. // Exhaustive for large, pt. 1
  161. void TestGroup4() {
  162. Subtasks({2});
  163.  
  164. // Combination of A = [3, 6], B = [2, 6], K = [2, B]
  165. CASE(A = 3, B = 2, K = 2);
  166. CASE(A = 3, B = 3, K = 2);
  167. // CASE(A = 3, B = 3, K = 3); (included as sample)
  168. CASE(A = 3, B = 4, K = 2);
  169. CASE(A = 3, B = 4, K = 3);
  170. CASE(A = 3, B = 4, K = 4);
  171. CASE(A = 3, B = 5, K = 2);
  172. CASE(A = 3, B = 5, K = 3);
  173. CASE(A = 3, B = 5, K = 4);
  174. CASE(A = 3, B = 5, K = 5);
  175. CASE(A = 3, B = 6, K = 2);
  176. CASE(A = 3, B = 6, K = 3);
  177. CASE(A = 3, B = 6, K = 4);
  178. CASE(A = 3, B = 6, K = 5);
  179. CASE(A = 3, B = 6, K = 6);
  180. CASE(A = 4, B = 2, K = 2);
  181. CASE(A = 4, B = 3, K = 2);
  182. CASE(A = 4, B = 3, K = 3);
  183. CASE(A = 4, B = 4, K = 2);
  184. CASE(A = 4, B = 4, K = 3);
  185. }
  186.  
  187. // Exhaustive for large, pt. 2
  188. void TestGroup5() {
  189. Subtasks({2});
  190.  
  191. CASE(A = 4, B = 4, K = 4);
  192. CASE(A = 4, B = 5, K = 2);
  193. CASE(A = 4, B = 5, K = 3);
  194. CASE(A = 4, B = 5, K = 4);
  195. CASE(A = 4, B = 5, K = 5);
  196. CASE(A = 4, B = 6, K = 2);
  197. CASE(A = 4, B = 6, K = 3);
  198. CASE(A = 4, B = 6, K = 4);
  199. CASE(A = 4, B = 6, K = 5);
  200. CASE(A = 4, B = 6, K = 6);
  201. CASE(A = 5, B = 2, K = 2);
  202. CASE(A = 5, B = 3, K = 2);
  203. CASE(A = 5, B = 3, K = 3);
  204. CASE(A = 5, B = 4, K = 2);
  205. CASE(A = 5, B = 4, K = 3);
  206. CASE(A = 5, B = 4, K = 4);
  207. CASE(A = 5, B = 5, K = 2);
  208. CASE(A = 5, B = 5, K = 3);
  209. CASE(A = 5, B = 5, K = 4);
  210. CASE(A = 5, B = 5, K = 5);
  211. }
  212.  
  213. // Exhaustive for large, pt. 3
  214. void TestGroup6() {
  215. Subtasks({2});
  216.  
  217. CASE(A = 5, B = 6, K = 2);
  218. CASE(A = 5, B = 6, K = 3);
  219. CASE(A = 5, B = 6, K = 4);
  220. CASE(A = 5, B = 6, K = 5);
  221. CASE(A = 5, B = 6, K = 6);
  222. CASE(A = 6, B = 2, K = 2);
  223. CASE(A = 6, B = 3, K = 2);
  224. CASE(A = 6, B = 3, K = 3);
  225. CASE(A = 6, B = 4, K = 2);
  226. CASE(A = 6, B = 4, K = 3);
  227. CASE(A = 6, B = 4, K = 4);
  228. CASE(A = 6, B = 5, K = 2);
  229. CASE(A = 6, B = 5, K = 3);
  230. CASE(A = 6, B = 5, K = 4);
  231. CASE(A = 6, B = 5, K = 5);
  232. CASE(A = 6, B = 6, K = 2);
  233. CASE(A = 6, B = 6, K = 3);
  234. CASE(A = 6, B = 6, K = 4);
  235. CASE(A = 6, B = 6, K = 5);
  236. CASE(A = 6, B = 6, K = 6);
  237. }
  238.  
  239. // Corners for large
  240. void TestGroup7() {
  241. Subtasks({2});
  242.  
  243. CASE(A = MAX_MALE, B = MAX_MALE, K = 1);
  244. CASE(A = MAX_MALE, B = MAX_MALE, K = 1);
  245. CASE(A = MAX_MALE, B = MAX_MALE, K = 2);
  246. CASE(A = MAX_MALE, B = MAX_MALE / 2 + 1, K = 1); // LPLPLPLPLLP...
  247. CASE(A = MAX_MALE - 1, B = MAX_MALE / 2 + 1, K = 1);
  248. CASE(A = MAX_MALE, B = MAX_MALE / 2, K = 1); // LPLPLLPLLP...
  249. CASE(A = MAX_MALE - 1, B = MAX_MALE / 2, K = 1);
  250. CASE(A = MAX_MALE, B = MAX_MALE / 2 - 1, K = 1); // LLPLLPLLP...
  251. CASE(A = MAX_MALE - 1, B = MAX_MALE / 2 - 1, K = 1);
  252. CASE(A = MAX_MALE, B = MAX_MALE / 2 - 2, K = 1); // Muschtahil
  253. CASE(A = MAX_MALE, B = MAX_MALE, K = MAX_MALE);
  254. CASE(A = MAX_MALE, B = 1, K = 1);
  255.  
  256. // Nonsense, copied-from-above-then-modified cases below
  257. CASE(A = MAX_MALE - 1, B = MAX_MALE / 2 + 1, K = 1); // LPLPLPLPLLP...
  258. CASE(A = MAX_MALE - 2, B = MAX_MALE / 2 + 1, K = 1);
  259. CASE(A = MAX_MALE - 1, B = MAX_MALE / 2, K = 1); // LPLPLLPLLP...
  260. CASE(A = MAX_MALE - 2, B = MAX_MALE / 2, K = 1);
  261. CASE(A = MAX_MALE - 1, B = MAX_MALE / 2 - 1, K = 1); // LLPLLPLLP...
  262. CASE(A = MAX_MALE - 2, B = MAX_MALE / 2 - 1, K = 1);
  263.  
  264. // Large cases?
  265. CASE(A = MAX_MALE / 100, B = MAX_FEMALE, K = 100); // LPPP...{100 P}..PLPPP...
  266. CASE(A = MAX_MALE / 100, B = MAX_FEMALE - 5, K = 100); // LPPP...{100 P}..PLPPP...
  267. }
  268. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement