Informatică, întrebare adresată de porecla7, 9 ani în urmă

Se consideră un şir de n (n <= 10000) numere naturale mai mici decât 100. Scrieţi un program eficient care se determine şi să afişeze numărul secvenţelor din şir cu proprietatea că suma elementelor din secvenţă este strict mai mare decât 50. De exemplu, pentru şirul 10, 20, 31, 40, numărul secvenţelor este 5. Acestea sunt: 10 20 31 10 20 31 40 20 31 20 31 40 31 40 O secvenţă este formată dintr-o succesiune de elemente alăturate din şirul iniţial. Nu veţi afişa secvenţele, ci doar câte sunt. Veţi preciza pe scurt şi ideea de rezolvare.

Răspunsuri la întrebare

Răspuns de radutanasa86
0
Complexitate :O(n)


#include <bits/stdc++.h>#define nmax 10001using namespace std;int a[nmax],n;int main(){    int i,j;    cin>>n;    for(i=1;i<=n;i++)        cin>>a[i];    j=1;    int s=0,sol=0;    for(i=1;i<=n;i++)    {        s+=a[i];        while(s>50)        {            sol+=(n-i+1);            s-=a[j];            j++;        }    }    cout<<sol<<"\n";    return 0;}
Alte întrebări interesante