fork download
  1. /* paiza POH! vol.3
  2.  * result:
  3.  * http://p...content-available-to-author-only...a.jp/poh/kirishima/result/3e55de48187072f33d6db840d5addb86
  4.  * author: Leonardone @ NEETSDKASU
  5.  */
  6. #include <stdio.h>
  7. int main(void){
  8. int m, n;
  9. int q[50] = {0};
  10. int r[50] = {0};
  11. int i;
  12.  
  13. int a0, a1, b0, b1, c0;
  14. int sum_q, sum_r, min;
  15.  
  16. scanf("%d", &m);
  17. scanf("%d", &n);
  18.  
  19. for (i = 0; i < n; i++) {
  20. scanf("%d %d", &q[i], &r[i]);
  21. }
  22.  
  23. if (n > 25) {
  24. b0 = 0;
  25. b1 = 1 << (n - 25);
  26. } else {
  27. b0 = 1 << n;
  28. b1 = 0;
  29. }
  30.  
  31. a0 = 1;
  32. a1 = 0;
  33. c0 = 1 << 25;
  34. min = 250000000;
  35. for (;;) {
  36. if (a1 > b1) {
  37. break;
  38. } else if (a1 == b1 && a0 > b0) {
  39. break;
  40. }
  41. if (a0 == c0) {
  42. a0 = 0;
  43. a1++;
  44. }
  45. sum_q = sum_r = 0;
  46. for (i = 0; i < 25; i++) {
  47. if ((a0 >> i) & 1) {
  48. sum_q += q[i];
  49. sum_r += r[i];
  50. }
  51. if ((a1 >> i) & 1) {
  52. sum_q += q[i + 25];
  53. sum_r += r[i + 25];
  54. }
  55. }
  56. if (sum_q >= m && sum_r < min) {
  57. min = sum_r;
  58. }
  59. a0++;
  60. }
  61. printf("%d\n", min);
  62. return 0;
  63. }
  64.  
Success #stdin #stdout 0s 2296KB
stdin
250
5
35 3640
33 2706
98 9810
57 5472
95 7790 
stdout
23072