Header Ad

HackerEarth Infinite arrays problem solution

In this HackerEarth infinite arrays problem solution You are given an array A of size N. You have also defined an array B as the concatenation of array A for an infinite number of times.

Now, you are given Q queries. Each query consists of two integers, Li and Ri. Your task is to calculate the sum of the subarray of N from index Li to Ri.



HackerEarth Infinite arrays problem solution


HackerEarth Infinite arrays problem solution.

#include <bits/stdc++.h>
#define M 1000000007
using namespace std;

long long func(long long *sum,long long X,long long N)
{
return (sum[X%N]+(((X/N)%M)*sum[N])%M)%M;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);

int T;
cin>>T;
while(T--)
{
int N;
cin>>N;
long long arr[N+1];
for(int i=1;i<=N;i++)
cin>>arr[i];
int Q;
cin>>Q;
long long L[Q],R[Q];
for(int i=0;i<Q;i++)
cin>>L[i];
for(int i=0;i<Q;i++)
cin>>R[i];
long long sum[N+1];
sum[0]=0;
for(int i=1;i<=N;i++)
sum[i]=(sum[i-1]+arr[i])%M;

for(int i=0;i<Q;i++)
cout<<(func(sum,R[i],N)-func(sum,L[i]-1,N)+M)%M<<" ";
cout<<endl;
}

}


Post a Comment

0 Comments