CHEEZY PIZZA - SEPT005 - EDITORIAL

CHEEZY PIZZA - SEPT005 - EDITORIAL

PROBLEM LINK:

Practice
Contest

Author: codechefsrm
Editorialist : codechefsrm

DIFFICULTY:

MEDIUM-HARD

PREREQUISITES:

Nested looping, Nested Conditional statements

PROBLEM:

To find cheesiness of two arrays given by C(P,Q)= sum of (C(P[i], Q[j])), for all 0 ≤ i < n1 and i>=j, where C(P[i], Q[j])=i/j if i is completely divisible by j, P[i]>=Q[j] and i>=j ( if j is equal to 0, C(P[i], Q[0])=0), otherwise if P[i]<Q[j] or i is not divisible by j, C(P[i], Q[j])=i+j

EXPLANATION:

Given two arrays P and Q of sizes n1 and n2, the ith element of P has to be compared with jth element of Q for all i>=j.
Now there can be two separate cases,
(i) if P[i]>=Q[j]
In this case, check if j=0, if yes, cheesiness of P[i] and Q[j] is 0. Now check if i is completely divisible j, if yes, find i/j to find the cheesiness of P[i] and Q[j], if not, cheesiness can be found out like in the second case.
(ii)if P[i]<Q[j]
In this case, find the sum of i and j to find the cheesiness if P[i] and Q[j]
Now, you need to find the sum of cheesiness obtained for all all P[i] and Q[j], given i>=j

INPUT
3 5
8 3 2
5 4 3 2 1

OUTPUT
12

Here, firstly i=0 and j=0, since i<=j, 8 and 5 will be compared. Since 8 is greater than 5, this is the first case. Now since j=0, C(8,5)=0.
Next, i=0 and j=1, but since i>j, cheesiness will not be found.
Next, i=1 and j=0, since i<=j, 3 and 5 will be compared. Since 3 is lesser than 5, this is the second case. Therefore, C(3,5)=1+0=1.
Similarly, cheesiness of P[i] and Q[j] for all possible values of i and j, given i>=j and their sum has to be printed.

SOLUTIONS:

Setter's Solution
#include <iostream>
using namespace std;
int main() {
 
  int n1, n2;
  cin >> n1>>n2;
 
  int a[n1], b[n2];
 
  for(int i=0; i<n1; i++){
    cin >> a[i];
  }
 
  for(int i=0; i<n2; i++){
    cin >> b[i];
  }

  int sum = 0, c;
  for(int i=0; i<n1; i++){
    for(int j=0; j<=i && j<n2; j++){
      if(a[i]>=b[j]){
        if(j==0){
            c=0;
        }
        else{
            if (i%j==0){
                c=i/j;
            }
            else {
                c=i+j;
            }
        }
      }
      else{
          c=i+j;
      }
    sum=sum+c;
    }
  }
 
  cout << sum;
 
 return 0;
}