fork download
  1. #include<stdio.h>
  2.  
  3. inline long int g()
  4. {
  5. long int n = 0;
  6. char ch;
  7. ch = getchar/*_unlocked*/();
  8. while(ch < '0' || ch > '9')
  9. ch = getchar/*_unlocked*/();
  10. while(ch >= '0' && ch <= '9') {
  11. n = n * 10 + (ch - '0');
  12. ch = getchar/*_unlocked*/();
  13. }
  14. return n;
  15. }
  16.  
  17. int main()
  18. {
  19. long int n, m, t;
  20. t = g();
  21. while(t--) {
  22. n=g();
  23. m=g();
  24. long int ar[n],i,b = 0,k = 0,arr[n][3];
  25. for(i = 0; i < n; i++) {
  26. ar[i] = g();
  27. }
  28. long int sum = 0 ;
  29. for(i = 0; i < n; i++) {
  30. sum += ar[i];
  31. if(sum <= m) {
  32. if( i - b > 0 ) {
  33. arr[k][0] = sum;
  34. arr[k][1] = i;
  35. arr[k][2] = i - b + 1;
  36. k++;
  37. }
  38. }
  39. else if(sum > m) {
  40. while(sum > m) {
  41. sum = sum - ar[b];
  42. b++;
  43. }
  44. if( i - b > 0 ) {
  45. arr[k][0] = sum;
  46. arr[k][1] = i;
  47. arr[k][2] = i - b + 1;
  48. k++;
  49. }
  50. }
  51. }
  52. b = 0;
  53. long int max = arr[0][1];
  54. for( i = 0 ; i < k ; i++) {
  55. if(max < arr[i][1] || (max == arr[i][1] && arr[b][0] > arr[i][0])) {
  56. max = arr[i][1];
  57. b = i;
  58. }
  59. }
  60. printf("%ld %ld\n",arr[b][0],arr[b][2]);
  61. }
  62. return 0;
  63. }
  64.  
  65.  
Success #stdin #stdout 0s 2056KB
stdin
2
5 5
5 4 3 2 1
5 100
20 15 30 80 100
stdout
3 2
65 3