1 – Cakezoned Codechef Solution|Problem Code: BENDSP2

Hello coders, today we are going to solve 1 – Cakezoned Codechef Solution.

1 - Cakezoned Codechef Solution
1 – Cakezoned Codechef Solution

Problem

Chefina loves cakes! N suitors numbered 1…N have arrived from across the seven seas to woo her.

Each of the suitors wishes to impress Chefina, so suitor i has prepared a cake of height Hi. To test the suitors, Chefina assigned them Q tasks. Each of the tasks is of one of the following types:

  • 11 L R X: Increase the heights of all cakes in the range L to R inclusive by X, i.e., increase each of HL, HL+1, HL+2…… HR by X.
  • 22: Find the sum of heights of all cakes prepared by odd-numbered suitors.
  • 33: Find the sum of heights of all cakes prepared by even-numbered suitors.

Can you help the suitors complete the tasks?

Input:

  • The first line contains an integer N, the number of cakes.
  • The next line contains N space-separated integers H1,H2,…,HN, denoting the heights of the cakes.
  • The third line contains an integer Q, the number of tasks.
  • The next Q lines describe the tasks assigned to the suitors by Chefina.

Output:

For each task of type 2 or 3, display the sum of heights of all cakes prepared by odd or even-numbered suitors, respectively, on a new line.

Constraints:

  • 1≤N≤1051≤N≤105
  • 1≤Q≤2⋅1051≤Q≤2⋅105
  • 1≤L≤R≤N1≤L≤R≤N
  • 1≤X,Hi≤108

Example

Sample Input 1 

6
2 9 5 2 1 8
5
2
3
1 1 3 2
3
2

Sample Output 1 

8
19
21
12

1 – Cakezoned CodeChef Solution in JAVA

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt();
    int[] H = new int[N];
    for (int i = 0; i < H.length; ++i) {
      H[i] = sc.nextInt();
    }
    int Q = sc.nextInt();
    sc.nextLine();
    String[] tasks = new String[Q];
    for (int i = 0; i < tasks.length; ++i) {
      tasks[i] = sc.nextLine();
    }
    System.out.println(solve(H, tasks));
    sc.close();
  }
  static String solve(int[] H, String[] tasks) {
    long oddSum =
        IntStream.range(0, H.length).filter(i -> i % 2 == 0).map(i -> H[i]).asLongStream().sum();
    long evenSum =
        IntStream.range(0, H.length).filter(i -> i % 2 != 0).map(i -> H[i]).asLongStream().sum();
    List<Long> result = new ArrayList<>();
    for (String task : tasks) {
      if (task.charAt(0) == '1') {
        String[] parts = task.split(" ");
        int L = Integer.parseInt(parts[1]);
        int R = Integer.parseInt(parts[2]);
        int X = Integer.parseInt(parts[3]);
        int minOdd = L + ((L % 2 == 0) ? 1 : 0);
        int maxOdd = R - ((R % 2 == 0) ? 1 : 0);
        oddSum += (maxOdd / 2L - minOdd / 2 + 1) * X;
        int minEven = L + ((L % 2 == 0) ? 0 : 1);
        int maxEven = R - ((R % 2 == 0) ? 0 : 1);
        evenSum += (maxEven / 2L - minEven / 2 + 1) * X;
      } else if (task.charAt(0) == '2') {
        result.add(oddSum);
      } else {
        result.add(evenSum);
      }
    }
    return result.stream().map(String::valueOf).collect(Collectors.joining("\n"));
  }
}

1 – Cakezoned CodeChef Solution in CPP

#include <bits/stdc++.h>
using namespace std;
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
	long long n,q,l,r,x,odd_sum=0,even_sum=0,i;
	cin>>n;
	long long a[n];
	for(i=1;i<=n;i++)
	{
	    cin>>a[i];
	    if(i%2!=0)
	    odd_sum+=a[i];
	    else
	    even_sum+=a[i];
	}
	cin>>q;
	while(q--)
	{
	    int x;
	    cin>>x;
	    if(x==1)
	    {
	        cin>>l>>r>>x;
	        if(l%2!=0 && r%2!=0)
	        {
	            even_sum+=(r-l)/2*x;
	             odd_sum+=((r-l)/2+1)*x;
	        }
	        else if(l%2==0 && r%2==0)
	        {
	            odd_sum+=(r-l)/2*x;
	             even_sum+=((r-l)/2+1)*x;
	        }
	        else
	        {
	         odd_sum+=((r-l)/2+1)*x;
	             even_sum+=((r-l)/2+1)*x;
	        }
	    }
	    else if(x==2)
	    {
	        cout<<odd_sum<<endl;
	    }
	    else
	    {
	       cout<<even_sum<<endl;
	    }
	}
	return 0;
}

1 – Cakezoned CodeChef Solution in PYTHON

import sys
class Cakes:
    cakes_count = 0
    cakes_heights_odd_even = [0, 0]
    def __init__(self, cakes_count):
        self.cakes_count = cakes_count
    def get_increments(self, span, first):
        if span % 2 == 0:
            return [int(span / 2), int(span / 2)]
        else:
            if first % 2 == 0:
                return [int(span / 2), int(span / 2) + 1]
            else:
                return [int(span / 2) + 1, int(span / 2)]
    def process(self):
        cakes_heights = sys.stdin.readline().rstrip('\n').split(' ')
        i = 0
        for height in cakes_heights:
            self.cakes_heights_odd_even[i] += int(height)
            i = (i + 1) % 2
        tasks_number = int(sys.stdin.readline())
        for task in range(tasks_number):
            task_row = sys.stdin.readline().rstrip('\n').split(' ')
            task_id = int(task_row[0])
            if task_id > 1:
                print(self.cakes_heights_odd_even[task_id - 2])
                continue
            first = int(task_row[2])
            span = first - int(task_row[1]) + 1
            height_increase = int(task_row[3])
            cakes_increments = self.get_increments(span, first)
            self.cakes_heights_odd_even[0] += cakes_increments[0] * height_increase
            self.cakes_heights_odd_even[1] += cakes_increments[1] * height_increase
if __name__ == '__main__':
    cakes = Cakes(int(sys.stdin.readline()))
    cakes.process()

Disclaimer: The above Problem (1 – Cakezoned) is generated by CodeChef but the solution is provided by Chase2learn.This tutorial is only for Educational and Learning purpose.

Sharing Is Caring