Java Code for Counting Rock Sample (TCS CodeVita) | PrepInsta

Java Code for Counting Rock Sample Problem

Counting Rock Samples

Counting Rock Samples is one of the sample questions of TCS CodeVita Season 9 coding competition. TCS organizes this coding competition on global level every year to in search of World’s Best Coder. The difficulty level of this competition is pretty high, last year more than 200k coders participated in the competition and only 25 coders reached till grand finale.

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.

Java Code

import java.util.Scanner;
 class Main {
 
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); 
        int[] a = new int[1000];
        int s,i,j,t,l1=0,l2=0,c=0;
        
        System.out.println("Enter the no of sample");
        s = sc.nextInt();
        
        System.out.println("Enter the no of range");
        t = sc.nextInt();
        
        System.out.println("Enter the numbers");
        for (i = 0; i < s; i++) {
            a[i] = sc.nextInt();
        }
        
        for (i = 0; i< t; i++) {
            System.out.println("Enter the max and min range");
                l1 = sc.nextInt();
                l2 = sc.nextInt();
                for (j = 0; j < s; j++) { if((a[j]>=l1)&&(a[j]<=l2))
                        c++;            
                }
                System.out.println(c);
                c=0;
        }
        
        
    }

Counting Rock Samples in Other Coding Languages

Python

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

Python

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

10 comments on “Java Code for Counting Rock Sample (TCS CodeVita) | PrepInsta”


  • 19-520

    Here is my code without any requests to user

    import java.util.Scanner;
    public class Rock {
    public static void main(String[] args) {
    Scanner sc=new Scanner (System.in);
    int S=sc.nextInt();
    int R=sc.nextInt();

    int[] arr=new int[S];
    int [][] arr2 = new int[R][2];
    for(int i=0;i<S;i++){
    arr[i]=sc.nextInt();
    }

    for (int i=0;i<R;i++){
    for(int j=0;j<2;j++){
    arr2[i][j]=sc.nextInt();
    }

    }
    int count;
    for (int i=0;i<R;i++){
    count=0;
    for(int j=0;j<1;j++){
    for(int k=0;k=arr2[i][j] && arr[k]<=arr2[i][j+1]) {
    count++;
    }
    }
    System.out.print(count + " ");
    }
    }
    }
    }


  • sayonislam.2000

    import java.util.*;
    public class one {
    public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int num1 = scan.nextInt();
    int num2 = scan.nextInt();
    int arr [] = new int[num1];
    for (int i = 0; i0) {
    ArrayList ARR = new ArrayList();
    int a = scan.nextInt();
    int b = scan.nextInt();
    for (int i = 0; i =a && arr[i]<=b){
    ARR.add(arr[i]);
    }
    }
    System.out.println(ARR.size());
    num2 = num2 – 1;
    }
    scan.close();
    }
    }


  • sayonislam.2000

    import java.util.*;
    public class one {
    public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int num1 = scan.nextInt();
    int num2 = scan.nextInt();
    int arr [] = new int[num1];
    for (int i = 0; i 0) {
    ArrayList ARR = new ArrayList();
    int a = scan.nextInt();
    int b = scan.nextInt();
    for (int i = 0; i =a && arr[i]<=b){
    ARR.add(arr[i]);
    }
    }
    System.out.println(ARR.size());
    num2 = num2 – 1;
    }
    scan.close();
    }
    }


  • ifeel

    // JUST TRY THIS
    // CODE
    import java.util.Scanner;
    class Stone
    {
    public static void main(String[] args)
    {
    int S=0,R=0;
    Scanner vc = new Scanner(System.in);
    System.out.println(” Enter No Of Samples and Ranges”);
    S=vc.nextInt();
    R=vc.nextInt();

    int arr[] = new int[S];
    int arr1[][] = new int[R][2];
    int arr2[] = new int[R];

    System.out.println(“Enter Samples”);
    for(int i=0;i<S;i++)
    {
    arr[i]=vc.nextInt();
    }

    System.out.println("Enter Ranges");
    for(int i=0;i<R;i++)
    {
    arr1[i][0]=vc.nextInt();
    arr1[i][1]=vc.nextInt();
    }

    for(int i=0;i<S;i++)
    {
    for(int j=0;j=arr1[j][0] && arr[i]<=arr1[j][1])
    {
    arr2[j]+=1;
    }
    }
    }

    for(int i=0;i<R;i++)
    {
    System.out.println(arr2[i]);
    }

    }

    }


  • Mriganka

    This code will not work for the input format that is asked in the question…it will give errors. So, If you guys can provide me some way to share my code, I will be really happy to share it.


    • HelpPrepInsta

      Hey Mriganka,you can post it in this comment section, we’ll fix this code, and if your will be correct we’ll post that code on our page


  • abhi

    what are doing watch constraint atleast O(R*S) will not work for all test cases we can use mo’s algo I think or suggest any other aproach


    • HelpPrepInsta

      Hey Abhi, can you please provide us a sample code for the approach that you thing is better for this problem, we’ll surely correct this silly mistake in our code


      • Mahesh

        #include
        using namespace std;

        int main(){
        int s, r; cin >> s >> r;
        int ar[s];
        for(int i=0; i> ar[i];
        int range[r][2];
        for(int i=0; i<r; i++){
        for(int j=0; j> range[i][j];
        }
        }

        // sort(ar,s);

        for(int i=0; i<r; i++){
        int sr = range[i][0];
        int er = range[i][1];
        int count = 0;
        for(int j=0; j
        = sr && ar[j] <= er){
        count++;
        }
        }
        cout << count << " ";
        }
        }


        • Mahesh

          “””
          #include
          using namespace std;

          int main(){
          int s, r; cin >> s >> r;
          int ar[s];
          for(int i=0; i> ar[i];
          int range[r][2];
          for(int i=0; i<r; i++){
          for(int j=0; j> range[i][j];
          }
          }

          // sort(ar,s);

          for(int i=0; i<r; i++){
          int sr = range[i][0];
          int er = range[i][1];
          int count = 0;
          for(int j=0; j
          = sr && ar[j] <= er){
          count++;
          }
          }
          cout << count << " ";
          }
          }
          """

          0