Subscribe Us

Responsive Advertisement

Advertisement

maximum subarray sum for given number N

 


maximum subarray sum for given number N



#include<bits/stdc++.h>


using namespace std;


#define ll long long int


#define endl "\n"


int main()


{


     ios_base::sync_with_stdio(0);


     cin.tie(0);


     cout.tie(0);



   ll t,n,k,i,r,j;

   cin>>t;

   while(t--)

   {

       ll sum1=0,ans=0;

       cin>>n>>k;

       ll a[n];

       for(i=0;i<n;i++)

       {

           cin>>a[i];

           sum1+=a[i];

       }

       if(sum1<k)

       {

           cout<<-1<<endl;

           continue;

       }

       ll sum=0;

       j=0;

       for(i=0;i<n;i++)

       {

           sum+=a[i];

           if(sum==k)

           {

               j=i+1;

               break;

           }


       }

       ans=max(j,ans);

       ll p=0;

       for(i=j;i<n;i++)

       {

           sum+=a[i];

           while(sum>k)

           {

               sum-=a[p];

               p++;



           }

           if(sum==k)

           {


               ans=max(ans,i-p+1);

           }

       }


       cout<<ans<<endl;


   }



    return 0;


}


Post a Comment

0 Comments