# GreekforGreeks Problem solving | Subarray with given sum | Google interview question for python with solution

### Google interviews problems solution and Problem

### Problem Statement:

Given an unsorted array B of size N of non-negative integers, find a continuous sub-array which adds to a given number S.

### Explanation of the problem statements

So, our 1st step is complete that's, understands the coding problem.

### Format to take the input

The first line of input contains an integer T denoting the number of test cases. Then T test cases follow. Each test case consists of two lines. The first line of each test case is N and S, where N is the size of the array and S is the sum. The second line of each test case contains N space-separated integers denoting the unsorted array elements.

### Format of the output

For each test case, in a new line, print the starting and ending positions(1 indexing) of the first such occurring subarray from the left if sum equals to subarray, else print -1.

#### Constraints:

1 <= T <= 100

1 <= N <= 107

1 <= Ai <= 1010

### Understand the format of the output

#### Example:

**Input:**

2 <== Number of the Test cases

5 12 <== Number of the element N and Sum S

1 2 3 7 5 <== Element of the array

10 15 <== Second test case of number of the element N and Sum S

1 2 3 4 5 6 7 8 9 10 <== Element of the array

**Output:**

2 4 <== Output of the first test cases

1 5 <== Output of the second test cases

### Explanation of the output:

Testcase1: the sum of elements from 2nd position to 4th position is 12

Testcase2: the sum of elements from 1st position to 5th position is 15

### How to solve the problem using my personal method

**We, solve the problem in the 4 steps:**

- Analyze the problem
- Take the input from the user
- Apply the logic to solve the problem
- Print the output

**1.**So, we need to analyze or understand the problem statement that we have done already above.

**2.**Now our second step to take the input from the user and note that only in the input format that was given above.

**3.**The third step is to apply logic to get an exact answer.

**4.**if the subarray is equal to the sum then we find the position of the for loop and print it otherwise we print the -1.

### Steps of the program:

- First, we will take the number of test cases.
- Then we will run the while loop according to the test cases.
- Then we will take the length of the list and sums that we want to output.
- Then we will separate the length(size) and Sum.
- Then we will take the list from the user.
- Then we will check the subarray and check is equal to the given sum or not.
- If they equal to the given sums then we will print the location of the subarray.
- And if it is not equal to this or greater than the given sum we will start the sums of the subarray from the 2 elements.
- After when the one test cases will close then we will minus the 1 number from the test cases.

**The solution in Python3:(code)**

```
```# Python program to sum the continuous subarray is equal to the given sum.
# First we will take the number of the test cases.
T=int(input("Enter the Number of Testcases"))
# Then we will run the while loop according to the test cases.
while(T>0):
# Then we will take the length of the list and sum that we want output.
NS=[int(x) for x in input("First Enter the Size of the list and sum of the Number").strip().split()]
# Then we will separate the length(size) and Sum.
n=NS[0]
k=NS[1]
# Then we will take the list from the user.
list=[int(x) for x in input("Enter the list").strip().split()]
last,start,start_sum,flag = 0, 0, 0, False
# Then we will check the subarray and check is equal to the given sum or not.
for i in range(n):
start_sum += list[i]
if(start_sum>=k):
last = i
while(k<start_sum and start<last):
start_sum -= list[start]
start = start+1
if(start_sum==k):
print(str(start+1) + " " + str(last+1))
flag=True
break
if flag==False:
print(-1)
# After when the one test cases will close then we will minus the 1 number from the test cases.
T=T-1
# This code is contributed by the Ankur Patel.

**Input:**

2

5 6

1 2 3 7 5

10 7

1 2 3 4 5 6 7 8 9 10

**Output:**

1 3

3 4

**If you have a better solution or query, please share it in a comment or Email.**

Interesting problem. Looking forward for more problems on algorithms, data structures as well as geeksforgeeks amazon interview questions for preparations of interviews.