1. import java.io.IOException;
  2. import java.io.DataInputStream;
  3. import java.util.*;
  4. class TestClass {
  5. public static void main(String args[] ) throws Exception {
  6. FastReader reader = new FastReader();
  7. StringBuilder sb = new StringBuilder();
  8. int n = reader.nextInt();
  9. int[] arr = new int[n];
  10. int sum = 0;
  11.  
  12. for(int i = 0; i < n; i++){
  13. arr[i] = reader.nextInt();
  14. sum += arr[i];
  15. }
  16.  
  17. int[] subL = new int[n * n];
  18. int[] subR = new int[n * n];
  19. int p = 0;
  20. for(int i = 0; i < n; i++){
  21. int len = 0;
  22. int remLen = n;
  23. int sumArr = 0;
  24. int sumRem = sum;
  25. for(int j = i; j < n; j++){
  26. sumArr += arr[j];
  27. sumRem -= arr[j];
  28. len++;
  29. remLen--;
  30. double avgArr = (double)sumArr / len;
  31. double avgRem = 0;
  32. if(remLen > 0) avgRem = (double)sumRem / remLen;
  33. if(avgArr > avgRem){
  34. subL[p] = i + 1;
  35. subR[p++] = j + 1;
  36. }
  37. }
  38. }
  39. sb.append(p).append("\n");
  40. for(int i = 0; i < p; i++){
  41. sb.append(subL[i]).append(" ");
  42. sb.append(subR[i]).append("\n");
  43. }
  44. System.out.print(sb);
  45. reader.close();
  46. }
  47. private static class FastReader{
  48. final private int BUFFER_SIZE = 1 << 16;
  49. private byte[] buffer;
  50. private DataInputStream din;
  51. private int bufferPointer, bytesRead;
  52. public FastReader(){
  53. buffer = new byte[BUFFER_SIZE];
  54. din = new DataInputStream(System.in);
  55. bufferPointer = bytesRead = 0;
  56. }
  57. private String nextLine() throws IOException{
  58. StringBuilder sb = new StringBuilder();
  59. byte c;
  60. while((c = read()) != -1 && c != '\n'){
  61. sb.appendCodePoint(c);
  62. }
  63. return sb.toString();
  64. }
  65. private int nextInt() throws IOException{
  66. int ret = 0;
  67. byte c = read();
  68. while(c <= ' '){
  69. c = read();
  70. }
  71. boolean neg = c == '-';
  72. if(neg){
  73. c = read();
  74. }
  75. while(c >= '0' && c <= '9'){
  76. ret = ret * 10 + c - '0';
  77. c = read();
  78. }
  79. return (neg) ? -ret : ret;
  80. }
  81. private long nextLong() throws IOException{
  82. long ret = 0;
  83. byte c = read();
  84. while(c <= ' '){
  85. c = read();
  86. }
  87. boolean neg = c == '-';
  88. if(neg){
  89. c = read();
  90. }
  91. while(c >= '0' && c <= '9'){
  92. ret = ret * 10 + c - '0';
  93. c = read();
  94. }
  95. return (neg) ? -ret : ret;
  96. }
  97. private double nextDouble() throws IOException{
  98. double ret = 0, div = 1;
  99. byte c = read();
  100. while(c <= ' '){
  101. c = read();
  102. }
  103. boolean neg = c == '-';
  104. if(neg){
  105. c = read();
  106. }
  107. while(c >= '0' && c <= '9'){
  108. ret = ret * 10 + (c - '0');
  109. c = read();
  110. }
  111. if(c == '.'){
  112. while((c = read()) >= '0' && c <= '9'){
  113. ret += (c - '0') / (div *= 10);
  114. }
  115. }
  116. return (neg) ? -ret : ret;
  117. }
  118. private void fillBuffer() throws IOException{
  119. bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE);
  120. if(bytesRead == -1){
  121. buffer[0] = -1;
  122. }
  123. }
  124. private byte read() throws IOException{
  125. if(bufferPointer == bytesRead){
  126. fillBuffer();
  127. }
  128. return buffer[bufferPointer++];
  129. }
  130. private void close() throws IOException{
  131. if(din != null){
  132. din.close();
  133. }
  134. }
  135. }
  136. }
Language: Java 8