Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- using namespace std;
- int main() {
- const int n = 100;
- int a[n];
- srand(time(0)); //чтобы числа были разными каждый раз!
- for (int i=0; i<n; i++) {
- a[i] = 0 + rand()%101;
- cout << a[i] << " ";
- }
- int sum = 0; //текущая сумма чисел >=0
- int maxsum = 0; //максимальная из таких сумм
- int len = 0; //длина цепочки
- int maxlen = 0; //максимальная из длин цепочек
- int index = -1; //начало самой длинной цепочки
- int s=0, tmp=0, i_max=0, i, j;
- for (int i = 0; i < n; i++) {
- if (a[i] >= 0) {
- sum += a[i];
- len++;
- if (len > 1) {
- if (sum > maxsum) {
- index = i + 1 - len;
- maxsum = sum;
- maxlen = len;
- }
- }
- }
- else len = sum = 0;
- }
- if (index == -1) {
- cout << "Chain not found!";
- }
- else {
- cout << endl << "Length = " << maxlen << ", Summa = " << maxsum << ", Index = " << index;
- cout << endl << "Items = ";
- for (int i = index; i < index+ maxlen; i++) cout << a[i] << " ";
- }
- for(i=0; i<10; i++)// суммируем первые 10 элементов
- s+=a[i];// по окончании этого цикла в переменной s сумма первых 10 элементов (считаем пока ее наибольшей возможной суммой)
- tmp=s;// в переменную tmp записываем значение суммы первых 10 элементов
- for(i=1; i<91; i++)
- {
- tmp+=a[i+9]-a[i-1];// для нахождения очередной суммы отнимаем левый элемент (относительно очередной 10-ки элементов) и прибавляем правый элемент
- if(tmp>s)// если очередная сумма больше значения записанного в s
- {
- s=tmp;// меняем значение в переменной s
- i_max=i;// записываем новый индекс в переменную i_max
- }
- }
- cout<<"Res:"<<endl;
- for(i=0; i<10; i++)// выводим 10 элементов с максимальной суммой
- cout<<a[i_max+i]<<" ";
- cin.get(); return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement