Maximize Array sum by including a number of of one other Array component in given ranges


  

import java.io.*;

import java.lang.*;

import java.util.*;

  

class Pair {

  

    

    

    int x, y;

  

    

    Pair(int x, int y)

    {

        this.x = x;

        this.y = y;

    }

  

    

    

    int size() { return (this.y - this.x) + 1; }

}

class GFG {

  

    

    

    static void maximumSum(int X[], int Y[], int N,

                           ArrayList<Pair> record, int K)

    {

  

        

        lengthy sum = 0;

  

        

        

        

        int s = 0;

        int e = Y.size - 1;

  

        

        for (int i = 0; i < record.measurement(); i++) {

  

            

            

            int S = record.get(i).x;

  

            

            

            int E = record.get(i).y;

  

            

            

            

            int size = record.get(i).size();

  

            

            

            

            

            int component = size % 2 == 0 ? Y[s] : Y[e];

  

            

            

            if (size % 2 == 0) {

  

                s++;

            }

            else {

                e--;

            }

  

            

            int counter = 1;

  

            

            

            

            for (int j = S - 1; j < E; j++) {

  

                

                

                

                if (counter % 2 != 0) {

  

                    X[j] = X[j] + (counter * component);

                }

                else {

                    X[j] = X[j] - (counter * component);

                }

  

                

                counter++;

            }

        }

  

        

        

        

        for (int i = 0; i < N; i++) {

  

            

            

            sum += X[i];

        }

  

        

        System.out.println(sum);

    }

  

    

    public static void foremost(String[] args)

    {

  

        int N = 3;

        int[] X = { 1, 2, 3 };

        int[] Y = { 1, 3, 4 };

        int K = 2;

  

        

        

        

        int[] begin = { 1, 1 };

        int[] finish = { 3, 1 };

  

        

        

        ArrayList<Pair> record = new ArrayList<>();

  

        

        for (int i = 0; i < K; i++) {

            record.add(new Pair(begin[i], finish[i]));

        }

  

        

        

        SortList(record);

  

        

        Arrays.kind(Y);

  

        

        maximumSum(X, Y, N, record, K);

    }

  

    

    

    static void SortList(ArrayList<Pair> record)

    {

        for (int i = 0; i < record.measurement() - 1; i++) {

            int max = i;

            for (int j = i + 1; j < record.measurement(); j++) {

                if (record.get(max).size()

                    < record.get(j).size()) {

                    max = j;

                }

            }

            Pair temp

                = new Pair(record.get(i).x, record.get(i).y);

            record.get(i).x = record.get(max).x;

            record.get(i).y = record.get(max).y;

            record.get(max).x = temp.x;

            record.get(max).y = temp.y;

        }

    }

}

Leave a Reply