Program w sprawdzarce zwraca błędną odpowiedź, wydaje mi się, że chodzi o jakiś szczególny przypadek ale nie mogę go znaleźć
#include <vector>
#include <iostream>
using namespace std;
unsigned int n,s,k,a;
unsigned int suma=0;
unsigned int kontrolna=0;
//int T[214748364];
vector<unsigned int> T;
int main()
{
cin>>n>>s;
for(int i=0;i<n;i++)
{
cin>>a;
T.push_back(a);
}
//for (int i=0;i<n;i++)
//{
int i=0;
for(int j=0;j<n;j++)
{
suma=suma+T[j];
if(suma>=s)
{
do
{
suma=suma-T[i];
i++;
}
while (suma>=s);
}
if (suma>kontrolna) kontrolna=suma;
}
// i=n;
//}
cout<<kontrolna;
return 0;}
Zrozum treść i napisz program.
Wejście
Pierwsza linia wejścia składa się z dwóchj liczb całkowitej n,s (0 < n,s < 2^31). Druga linia wejścia zawiera xi liczb, gdzie i= 1,2, ... n (0 < xi < 2^31)
Wyjście
Na wyjściu powinnina się pojawić suma kolejnych xj liczb ( j= 1,2, ... k <=n) która nie przekracza wartości s.
Przykład
Wejście:
5 20
6 10 2 8 1
Wyjście:
18