Advertisement
Guest User

Untitled

a guest
Nov 15th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. using namespace std;
  5.  
  6. int main() {
  7. const int n = 100;
  8. int a[n];
  9. srand(time(0)); //чтобы числа были разными каждый раз!
  10. for (int i=0; i<n; i++) {
  11. a[i] = 0 + rand()%101;
  12. cout << a[i] << " ";
  13. }
  14.  
  15.  
  16. int sum = 0; //текущая сумма чисел >=0
  17. int maxsum = 0; //максимальная из таких сумм
  18. int len = 0; //длина цепочки
  19. int maxlen = 0; //максимальная из длин цепочек
  20. int index = -1; //начало самой длинной цепочки
  21. int s=0, tmp=0, i_max=0, i, j;
  22. for (int i = 0; i < n; i++) {
  23. if (a[i] >= 0) {
  24. sum += a[i];
  25. len++;
  26. if (len > 1) {
  27. if (sum > maxsum) {
  28. index = i + 1 - len;
  29. maxsum = sum;
  30. maxlen = len;
  31. }
  32. }
  33. }
  34. else len = sum = 0;
  35. }
  36.  
  37. if (index == -1) {
  38. cout << "Chain not found!";
  39. }
  40. else {
  41. cout << endl << "Length = " << maxlen << ", Summa = " << maxsum << ", Index = " << index;
  42. cout << endl << "Items = ";
  43. for (int i = index; i < index+ maxlen; i++) cout << a[i] << " ";
  44. }
  45. for(i=0; i<10; i++)// суммируем первые 10 элементов
  46. s+=a[i];// по окончании этого цикла в переменной s сумма первых 10 элементов (считаем пока ее наибольшей возможной суммой)
  47. tmp=s;// в переменную tmp записываем значение суммы первых 10 элементов
  48. for(i=1; i<91; i++)
  49. {
  50. tmp+=a[i+9]-a[i-1];// для нахождения очередной суммы отнимаем левый элемент (относительно очередной 10-ки элементов) и прибавляем правый элемент
  51. if(tmp>s)// если очередная сумма больше значения записанного в s
  52. {
  53. s=tmp;// меняем значение в переменной s
  54. i_max=i;// записываем новый индекс в переменную i_max
  55. }
  56. }
  57. cout<<"Res:"<<endl;
  58. for(i=0; i<10; i++)// выводим 10 элементов с максимальной суммой
  59. cout<<a[i_max+i]<<" ";
  60. cin.get(); return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement