fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int comp(const void*a, const void *b);
  5.  
  6. int main(void)
  7. {
  8.  
  9. int sum,temp,M;
  10. int i,j,k,N,max,check;
  11. int num[100] = {0};
  12.  
  13. scanf("%d %d",&N,&M);
  14.  
  15. sum=-1;
  16. check=0;
  17.  
  18. for(i=0;i<N;i++)
  19. scanf("%d",&num[i]);
  20.  
  21. printf("%d\n",num[0]);
  22.  
  23. qsort(num,N,sizeof(int),comp);
  24.  
  25. temp=num[0]+num[1];
  26. for(i=(N-1);i>1;i--)
  27. if((temp+num[i])<=M)
  28. {
  29. max=i;
  30. sum=temp+num[i];
  31. break;
  32. }
  33.  
  34. for(i=0;i<(N-2);i++)
  35. {
  36.  
  37. for(j=(i+1);j<(max-1);j++)
  38. {
  39. while(num[j]==num[j-1])
  40. j++;
  41.  
  42. if(j==(max-1))
  43. break;
  44.  
  45. temp=num[i]+num[j];
  46.  
  47. for(k=max;k>j;k--)
  48. {
  49. if(k==(j+1))
  50. {
  51. check=1;
  52. break;
  53. }
  54. if(M>=(temp+num[k]))
  55. {
  56. sum=sum>(temp+num[k])?sum:(temp+num[k]);
  57. break;
  58. }
  59. if((j+1)==k)
  60. check=1;
  61. }
  62.  
  63. if(check==1)
  64. {
  65. check=0;
  66. break;
  67. }
  68. }
  69.  
  70. }
  71.  
  72. printf("%d\n",sum);
  73.  
  74. return 0;
  75. }
  76.  
  77. int comp(const void*a, const void *b)
  78. {
  79.  
  80. int num1=*(int*)a;
  81. int num2=*(int*)b;
  82. if(num1>num2)
  83. return 1;
  84. else return -1;
  85.  
  86. }
  87.  
Success #stdin #stdout 0s 4864KB
stdin
5 21
5 6 7 8 9
stdout
5
21