Python Code Counting Rock Samples Problem (TCS CodeVita) | PrepInsta

Python Code for Counting Rock Sample Problem

Counting Rock Samples

Counting Rock Samples is one of the sample problem of TCS CodeVita Season 9 coding competition. This is a global level competition organized by TCS every year, from last 8 years. Every year more than 200k coders participate in this coding competition for the title of World’s best Coder.

Problem Description

Question – : Juan Marquinho is a geologist and he needs to count rock samples in order to send it to a chemical laboratory. He has a problem: The laboratory only accepts rock samples by a range of its size in ppm (parts per million).

Juan Marquinho receives the rock samples one by one and he classifies the rock samples according to the range of the laboratory. This process is very hard because the number of rock samples may be in millions.

Juan Marquinho needs your help, your task is to develop a program to get the number of rocks in each of the ranges accepted by the laboratory.

Input Format: An positive integer S (the number of rock samples) separated by a blank space, and a positive integer R (the number of ranges of the laboratory); A list of the sizes of S samples (in ppm), as positive integers separated by space R lines where the ith line containing two positive integers, space separated, indicating the minimum size and maximum size respectively of the ith range.

Output Format: R lines where the ith line contains a single non-negative integer indicating the number of the samples which lie in the ith range.

Constraints:

  • 10 <= S <= 10000
  • 1 <= R <= 1000000
  • 1<=size of Sample <= 1000

Example 1

  • Input: 10 2
  • 345 604 321 433 704 470 808 718 517 811
  • 300 350
  • 400 700

Output: 2 4

Explanation:

There are 10 samples (S) and 2 ranges ( R ). The samples are 345, 604,811. The ranges are 300-350 and 400-700. There are 2 samples in the first range (345 and 321) and 4 samples in the second range (604, 433, 470, 517). Hence the two lines of the output are 2 and 4

Example 2

  • Input: 20 3
  • 921 107 270 631 926 543 589 520 595 93 873 424 759 537 458 614 725 842 575 195
  • 1 100
  • 50 600
  • 1 1000

Output: 1 12 20

Explanation:

There are 20 samples and 3 ranges. The samples are 921, 107 195. The ranges are 1-100, 50-600 and 1-1000. Note that the ranges are overlapping. The number of samples in each of the three ranges are 1, 12 and 20 respectively. Hence the three lines of the output are 1, 12 and 20.

Python Code

samples, ranges =[int(i) for i in input().split()]
count = 0
final = []
arr = list(map(int, input().split()))
for i in range(0, ranges):
    range1, range2 = [int(i) for i in input().split()]
    for j in range(0, samples):
        if range1 <= arr[j] <= range2:
            count = count + 1
    final.append(count)
    count = 0
for i in range(0, len(final)):
    print(final[i], end=" ")
Output
10 2
345 604 321 433 704 470 808 718 517 811
300 350
400 700
2 4

Counting Rock Samples in Other Coding Languages

C

To find the solution of Counting Rock Sample Problem in C Programming language click on the button below:

C

C++

To find the solution of Counting Rock Sample Problem in C++ Programming language click on the button below:

C++

Java

To find the solution of Counting Rock Sample Problem in Java Programming language click on the button below:

Java

17 comments on “Python Code Counting Rock Samples Problem (TCS CodeVita) | PrepInsta”


  • Ravi

    class Lab:
    def __init__(self,sample,ranges):
    self.s = sample
    self.r = ranges
    self.samplelist = []
    self.allRange = []
    self.getData()
    self.checkData()
    def getData(self):
    for i in range(self.s):
    self.samples = int(input(“Sample “+str(i+1)+” “))
    self.samplelist.append(self.samples)
    for i in range(self.r):
    self.rl = []
    print(“Give Range “+str(i+1))
    self.rStart = int(input(“Range Start : “))
    self.rEnd = int(input(“Range End : “))
    self.rl.append(self.rStart)
    self.rl.append(self.rEnd)
    self.allRange.append(self.rl)
    #print(self.allRange)

    def checkData(self):
    cnt = 0
    for i in range(self.r):
    for j in self.samplelist:
    if j >=self.allRange[i][0] and j<=self.allRange[i][1]:
    cnt += 1
    print("There are "+str(cnt)+" samples in range "+str(self.allRange[i][0])+" to "+str(self.allRange[i][1]))
    cnt = 0
    lab1 = Lab(10,2)


  • Komal

    solution
    n,k=map(int,input().split(” “))
    A=list(map(int,input().split(” “)))
    l=[]
    for i in range(k):
    s,r=map(int,input().split(” “))
    c=0
    for i in range(s,r+1):
    if i in A:
    c+=1
    l.append(c)
    c=0
    print(*l)


  • NEHAL

    s, r = map(int,input().split())
    rocks = list(map(int,input().split()))
    final = []
    for _ in range(r):
    count = 0
    Min,Max = map(int,input().split())
    for i in rocks:
    if Min<=i<=Max:
    count+=1
    final.append(count)
    print(*final)


  • Shaswata

    sample_no, range_no = map(int, input().split())
    sample = list(map(int,input().split()))
    result = []
    for i in range(range_no):
    count=0
    lower, upper = map(int, input().split())
    for j in sample:
    if j>=lower and j<=upper:
    count += 1
    result.append(count)
    print(result)


  • Ashish

    Hope Someone Find this helpful !
    n_sample = int(input(“Enter the Number of Sample: “))
    samples = []
    count_samples = []
    count = 0
    print(f”Enter the Values of {n_sample} samples(1 to 1000): “)
    for i in range(n_sample):
    s = int(input())
    samples.append(s)

    n_range = int(input(“Enter the No. of Ranges: “))
    for i in range(n_range):
    start = int(input(“Enter the Start of Range: “))
    end = int(input(“Enter the End of Range: “))
    for j in samples:
    if start <= j <= end:
    count += 1
    count_samples.append(count)
    count = 0

    for i in count_samples:
    print(i, end=" ")


  • Divesh

    Please find the alternate solution for above problem
    no_sr=input(“Enter Number of samples and No of ranges”)
    arr_no_sr=[int(n) for n in no_sr.split(” “)]

    no_ss=input(“Enter rocks sample sizes”)
    arr_no_ss=[int(n) for n in no_ss.split(” “)]

    # Now we will start a loop till no of ranges
    range_list=[]
    for i in range(arr_no_sr[1]):
    r=input(“Enter the range”)
    range_list.append([int(n) for n in r.split(” “)])

    #print(arr_no_sr)
    #print(arr_no_ss)
    #print(range_list)

    # for optimization we can sort the range list
    # Creating output_list with all intials to zeros
    output_list=[0 for i in range_list]
    for sample in arr_no_ss:
    for range in range_list:
    if range[0]<=sample<=range[1]:
    output_list[range_list.index(range)]+=1

    print(" ".join([str(i) for i in output_list]))


  • nandish

    a=list(map(int,input().split()[:2]))
    b=list(map(int,input().split()[:a[0]]))
    c=list(map(int,input().split()[:a[1]]))
    d=list(map(int,input().split()[:a[1]]))
    count=0
    mul=0
    for i in b:
    if i in range(c[0],c[len(c)-1]):
    count+=1
    for i in b:
    if i in range(d[0],d[len(d)-1]):
    mul=mul+1
    print(count,mul)


  • Sukesh

    Len,Range_time=list(map(int,(input().split())))
    List=list(map(int,input().split()))
    temp=[list(map(int,(input().split()))) for i in range(Range_time)]
    List1=[]; count=0
    for j in range(Range_time):
    for k in range(Range_time):
    List1.append(temp[j][k])
    List2=[] ;a=0 ;b=1
    for l in range(Range_time):
    for m in range(len(List)):
    if List1[a]<List[m]<List1[b]:count+=1
    List2.append(count)
    count=0; a+=2 ;b+=2
    for _ in range(Range_time):
    print(List2[_],end=' ')


  • Pedapudi

    n,r=map(int,input().split())
    l=list(map(int,input().split()))
    for i in range(r):
    m,t=map(int,input().split())
    c=0
    for i in range(len(l)):
    if l[i]>m and l[i]<t:
    c+=1
    print(c,end=" ")


  • Siri

    samples,no_of_ranges =map(int,input().split(‘ ‘))
    list_of_samples=list(map(int,input().split(‘ ‘)))
    for _ in range (no_of_ranges ):
    min_of_range,max_of_range=map(int,input().split(‘ ‘))
    c=0
    for element in list_of_samples:
    if element>=min_of_range and element<=max_of_range:
    c=c+1
    print (c,end=' ')


  • cvs

    no_of_samples=int(input(“enter the no.of samples that you want”))
    no_of_ranges=int(input(“enter the no.of ranges within which the samples are to be sorted out”))
    samples=[]
    for i in range(no_of_samples):
    specimen=int(input(“enter the size of the specimen”))
    samples.append(specimen)
    print(samples)
    lower_limit=[]
    upper_limit=[]
    count=0
    final=[]
    for j in range(no_of_ranges):
    lower_range_value=int(input(“enter the lower range limit value”))
    upper_range_value=int(input(“enter the upper range limit value”))
    lower_limit.append(lower_range_value)
    upper_limit.append(upper_range_value)
    for i in range(len(lower_limit)):
    for a in samples:
    if lower_limit[i]<=a<=upper_limit[i]:
    count+=1

    final.append(count)
    count=0
    print("the list of number of specimens in the given ranges are respectively",final)


  • harshit

    def Calculate(upper,lower,arr):
    count=0
    for i in range(len(arr)):
    if(lower<=arr[i]<=upper):
    count+=1
    #print(count)
    return count

    n,ranges=map(int,input().split(" "))
    arr=[int(i) for i in input().split(" ")]
    Answers=[]
    for i in range(ranges):
    lower,upper=map(int,input().split(" "))

    Answers.append(Calculate(upper,lower,arr))

    for i in range(ranges):
    print(Answers[i],end=" ")