fork download
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4. long long int arr[200002];
  5. long long int val[200002];
  6.  
  7. int compare (const void * a, const void * b)
  8. {
  9. return ( *(int*)a - *(int*)b );
  10. }
  11.  
  12.  
  13. int main()
  14. {
  15. long long int n,k;
  16. scanf("%lld %lld",&n,&k);
  17. long long int i=0;
  18. for(i=0;i<n;i++)
  19. {
  20. scanf("%lld",&arr[i]);
  21. }
  22.  
  23. //qsort (arr, n, sizeof(long long int), compare);
  24. i=0;
  25. if(k>n)
  26. {
  27. k=n;
  28. }
  29. long long int maxsum1=0;
  30. long long int maxsum2=0;
  31. long long int cursum=0;
  32. long long int j=0;
  33. i=0;
  34. for(i=0;i<k;i++)
  35. {
  36. cursum+=arr[i];
  37. }
  38. maxsum1=cursum;
  39. cursum=0;
  40. j=0;
  41. while(i<n && j<k)
  42. {
  43. cursum+=arr[i];
  44. i++;
  45. j++;
  46. }
  47. if(cursum>=maxsum1)
  48. {
  49. maxsum2=maxsum1;
  50. maxsum1=cursum;
  51. }
  52. else
  53. {
  54. maxsum2=cursum;
  55. }
  56.  
  57. while(i<n)
  58. {
  59. cursum=0;
  60. j=0;
  61. while(i<n && j<k)
  62. {
  63. cursum+=arr[i];
  64. i++;
  65. j++;
  66. }
  67. if(cursum>=maxsum1)
  68. {
  69. maxsum2=maxsum1;
  70. maxsum1=cursum;
  71. }
  72. else if(cursum>=maxsum2 && cursum<maxsum1)
  73. {
  74. maxsum2=cursum;
  75. }
  76. else
  77. {}
  78.  
  79.  
  80. }
  81. long long int tempsum=0;
  82. long long int check=n-k;
  83. for(i=check;i<n;i++)
  84. {
  85. tempsum+=arr[i];
  86. }
  87. if(n%k!=0)
  88. {
  89. if(tempsum>=maxsum1)
  90. {
  91. maxsum2=maxsum1;
  92. maxsum1=tempsum;
  93. }
  94. else if(tempsum>=maxsum2 && tempsum<maxsum1)
  95. {
  96. maxsum2=tempsum;
  97. }
  98. else{}
  99. }
  100. printf("%lld %lld",maxsum1,maxsum2);
  101. return 0;
  102.  
  103. }
Success #stdin #stdout 0s 6424KB
stdin
8 2
1 3 3 1 2 3 11 1
stdout
12 5