fork(2) download
  1. /* paiza POH! Vol.1
  2.  * result:
  3.  * http://p...content-available-to-author-only...a.jp/poh/ec-campaign/result/0c371ebace27b7f2fb8ee1dfb57bfbd4
  4.  * author: Leonardone @ NEETSDKASU
  5.  */
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #define DFSIZE (5)
  9.  
  10. int list[500000];
  11.  
  12. int mysort( const void * a , const void * b ) {
  13. return *(int*)b - *(int*)a;
  14. }
  15.  
  16. inline int gc(void) {
  17. register int c, n = 0;
  18. do {
  19. c = getchar();
  20. } while ((c < '0') || (c > '9'));
  21. do {
  22. n = n * 10 + (c - '0');
  23. c = getchar();
  24. } while ((c >= '0') && (c <= '9'));
  25. return n;
  26. }
  27.  
  28. void pi(register int n) {
  29. register int t;
  30. if (n < 10) {
  31. putchar(n + '0');
  32. } else {
  33. t = n / 10;
  34. pi(t);
  35. putchar(n - t * 10 + '0');
  36. }
  37. }
  38.  
  39. int foo(const int *p, const int f, const int e, const int m) {
  40. int ci, df = e - f;
  41. if (df < DFSIZE) return f;
  42. if (m < p[ci = (f + (df >> 1))]) {
  43. return foo(p, ci, e, m);
  44. } else {
  45. return foo(p, f, ci, m);
  46. }
  47. }
  48.  
  49. int bar(const int *p, const int f, const int e, const int m) {
  50. int ci, df = e - f;
  51. if (df < DFSIZE) return e;
  52. if (m < p[ci = (f + (df >> 1))]) {
  53. return bar(p, ci, e, m);
  54. } else {
  55. return bar(p, f, ci, m);
  56. }
  57. }
  58.  
  59. int main(void) {
  60. register int j, *f, *e, sum, tmp;
  61. int n, d, m, p, fi;
  62.  
  63. n = gc();
  64. d = gc();
  65.  
  66. f = list;
  67. j = n;
  68. while (j) {
  69. f[--j] = gc();
  70. }
  71. qsort(list, n, sizeof(int), mysort);
  72.  
  73. --n;
  74. j = d + 1;
  75. while (--j) {
  76. m = gc();
  77. f = list + (fi = foo(list, 0, n, m));
  78. e = list + bar(list, fi, n, m - *f);
  79. tmp = 0;
  80. while (f != e) {
  81. sum = *f + *e;
  82. if (sum > m)
  83. ++f;
  84. else {
  85. if (sum > tmp) tmp = sum;
  86. --e;
  87. }
  88. }
  89. pi(tmp);
  90. putchar('\n');
  91. }
  92. return 0;
  93. }
  94.  
  95.  
Success #stdin #stdout 0s 4204KB
stdin
    5 2
    4000
    3000
    1000
    2000
    5000
    10000
    3000
stdout
9000
3000