Practice
Contest Link
Problem Link
Author: Srinjoy Pal
Tester: Abhisekh Paul ,Sayan Poddar
Editorialist: Srinjoy Pal
DIFFICULTY:
CAKEWALK
PREREQUISITES:
Basic Math , Conditional Statements
PROBLEM:
Finding max element of the array. Then performing simple math operations we have to find the cost of each steroid . find the minimum cost.
EXPLANATION:
First we have to find the max element of the array. Subtracting N from the max element and adding 1 we get the required length to cover. Next, We have to find the number of each steroid required to cover the distance. Then , we have to find the minimum cost for buying out of the two.
TIME COMPLEXITY:
O(n)
SPACE COMPLEXITY:
O(1)
SOLUTION:
Setter’s Solution
C++
#include <bits/stdc++.h>
using namespace std;
int main(){
ll t;
cin>>t;
while(t--)
{
ll m,p,x,q,y,r,st1,st2;
cin>>m>>p>>x>>q>>y>>r;
ll a[p];
for(int i=0;i<p;i++)
{
cin>>a[i];
}
ll z=*max_element(a, a + p);
ll req= z-m+1;
if(req%x==0)
st1=req/x;
else if(req%x!=0)
st1=req/x+1;
if(req%y==0)
st2=req/y;
else if(req%y!=0)
st2=req/y+1;
cout<<min(st1*q,st2*r)<<endl;
}
return 0;
}
Tester’s Solution
Python
import math
d = int(input())
for i in range(0, d):
m,p,x,q,y,r= list(map(int, input().split()))
a = list(map(int, input().split()))
z=max(a)
n=z-m+1
print(min(((math.ceil(n/x))*q),((math.ceil(n / y)) * r)))
Tester’s Solution
Java
//package myplace;
import java.util.*;
class exam {
public static void main (String[] args) {
Scanner sc=new Scanner(System.in);
int t=Integer.parseInt(sc.nextLine());
while(t>0)
{
String s[]=sc.nextLine().split(" ");
int m=Integer.parseInt(s[0]);
int p=Integer.parseInt(s[1]);
int x=Integer.parseInt(s[2]);
int q=Integer.parseInt(s[3]);
int y=Integer.parseInt(s[4]);
int r=Integer.parseInt(s[5]);
String s1[]=sc.nextLine().split(" ");
int max=0;
for(int i=0;i<s1.length;i++)
{
if(Integer.parseInt(s1[i])>max)
{
max=Integer.parseInt(s1[i]);
}
}
double diff=max-m+1;
double diffx=diff/x;
double diffy=diff/y;
int a1= (int) (Math.ceil(diffx)*q);
int a2=(int) (Math.ceil(diffy)*r);
double cost=Math.min(a1,a2);
System.out.println((int)cost);
t--;
}
}
}