1 – Cakezoned Codechef Solution

Hello Programmers In this post, you will know how to solve the 1 – Cakezoned Codechef Solution. The Problem Code: BENDSP2

1 - Cakezoned Codechef Solution
1 – Cakezoned Codechef Solution

One more thing to add, don’t directly look for the solutions, first try to solve the problems of Codechef by yourself. If you find any difficulty after trying several times, then you can look for solutions.

Ezoicreport this adProblem

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()
Ezoicreport this ad

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

Note:- I compile all programs, if there is any case program is not working and showing an error please let me know in the comment section. If you are using adblocker, please disable adblocker because some functions of the site may not work correctly.

Next: Gasoline Introduction Codechef Solution

Sharing Is Caring

Leave a Comment

Ezoicreport this ad