ANITGUY2 - Editorial

Problem link: https://www.codechef.com/PPW12020/problems/ANITGUY2

DIFFICULTY:

Simple

Solution:

#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main() {

ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
ll t;
cin>>t;
while(t--){
    ll n,k;
    cin>>k>>n;
    ll arr[n];
    for(int i=0;i<n;i++)cin>>arr[i];
    ll product=0,p=1,l=0;
    for(int i=0;i<n;i++){
        p*=arr[i];
        while(p>=k && l<=i){
            product+=i-l;
            p/=arr[l++];
        }
    }
    p=(n-l)*(n-l+1)/2;
    cout<<p+product<<"\n";
}
//code
return 0;

}

Run Time: 0.3 sec

Thanks and Regards

Would you please explain this solution, that would be really helpful

Please explain the last step.

Thanks for sheer display of ignorance and irresponsibility.

#include<bits/stdc++.h>
#define fast ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define arin(x,n) for(int i=0;i<n;i++)cin>>x[i]
#define debug(x,n) for(int i=0;i<n;i++)cout<<x[i]<<" "
#define pb push_back
typedef long long int ll;

using namespace std;

void solve()
{
ll n,k;
cin>>k>>n;

ll arr[n];
arin(arr,n);

ll start = 0, end = 0,count = 0, sum = arr[0]; 
while (start < n && end < n) { 
	if (sum < k) { 
		end++; 
		if (end >= start) 
			count += end - start; 
		if (end < n) 
			sum *= arr[end]; 
	}
	else { 
		sum /= arr[start]; 
		start++; 
	} 
} 

cout<<count<<"\n"; 

}

int main()
{
fast;
ll t=1;
cin>>t;
while(t–)
solve();
return 0;
}

why this code giving wrong solution can you explain?