Question

In: Computer Science

Stacks & Queues C++ You are given a stack of N integers such that the first...

Stacks & Queues
C++

You are given a stack of N integers such that the first element represents the top of the stack and the last element represents the bottom of the stack. You need to pop at least one element from the stack. At any one moment, you can convert stack into a queue. The bottom of the stack represents the front of the queue. You cannot convert the queue back into a stack. Your task is to remove exactly K elements such that the sum of the K removed elements is maximized.

Input format :
The first line consists of two space-separated integers N and K. The second line consists of N space-separated integers denoting the elements of the stack.

Output format : Print the maximum possible sum of the K removed elements

Sample Input:

10 5
10 9 1 2 3 4 5 6 7 8

Sample Output:

40

Explanation Pop two elements from the stack. i.e {10,9} Then convert the stack into queue and remove first three elements from the queue. i.e {8,7,6}. The maximum possible sum is 10+9+8+7+6 = 40

This is my code so far

#include <iostream>
#include <deque>
std::deque<int> stacque;
using namespace std;
void printDeque(deque<int> vector) {
for(int i=0;(unsigned)i<vector.size();i++) {
cout<<vector.at(i)<<" ";
}
cout<<endl;
}


int main() {
int n,q;
cin>>n;
cin>>q;
for(int i=0;i<n;i++){
int x;
cin>>x;
stacque.push_back(x);
}
/*cout<<n<<" "<<q<<endl;
printDeque(stacque);*/

int sum=0;
for(int i=0;i<q;i++){
  
if(stacque.front()>stacque.back()){
int a;
a=stacque.front();
sum+=a;
stacque.pop_front();
  
}
else {
int b;
b=stacque.back();
sum+=b;
stacque.pop_back();
  
}
}
cout<<sum<<endl;

return 0;
}


my output for the test is nearly correct but its only slightly off

input test 1

420 135
46 1 19 60 86 64 5 98 4 85 93 25 82 56 83 31 92 23 77 36 17 63 31 61 92 31 86 82 91 84 26 54 27 61 95 87 53 50 72 30 73 49 35 4 21 36 73 50 97 70 95 7 81 92 76 33 77 48 50 100 80 22 35 67 40 56 28 31 31 60 8 10 31 76 99 69 56 65 2 79 15 5 68 82 55 60 16 95 44 34 2 54 71 88 100 100 76 16 49 46 69 90 41 11 33 45 8 58 37 40 9 65 50 79 15 54 6 98 11 56 77 20 89 22 18 24 33 12 52 33 31 31 71 1 26 68 62 53 14 5 70 79 18 12 71 93 60 37 23 86 8 31 73 71 76 70 51 88 55 68 59 100 45 49 16 35 61 78 29 80 74 19 56 72 92 49 17 86 17 48 58 68 57 100 31 87 38 11 63 7 48 59 73 69 84 58 77 74 1 4 55 53 52 96 99 74 77 8 44 40 55 50 99 28 13 40 83 43 68 97 53 81 53 49 86 68 87 92 22 65 26 2 14 62 51 76 67 1 20 99 60 13 72 69 17 55 92 94 1 28 69 72 71 42 31 79 83 100 71 56 91 40 20 33 1 12 96 27 95 29 57 40 70 57 8 80 93 4 30 31 82 53 98 67 75 6 60 49 23 54 52 67 84 71 67 85 92 58 42 80 40 87 60 55 17 73 90 3 55 2 63 86 53 60 71 16 34 46 1 49 10 82 4 67 64 3 91 20 56 98 22 45 14 85 93 3 54 77 31 49 67 15 32 31 18 7 95 34 12 96 99 30 88 91 42 85 72 74 12 4 40 97 79 65 29 29 48 76 35 73 66 39 9 86 7 99 22 46 66 48 21 30 52 69 22 26 16 52 48 62 55 97 60 86 86 59 68 94 21 51 90 32 32 94 12 96 29 73 4 98 13 80 72 67 18 68 15 26 79 38
Your output
7033
Your output does not contain
7510

input test 2

Input
490 231
68 51 46 65 74 64 38 94 96 65 39 9 26 86 99 93 37 65 11 86 53 45 40 56 43 32 98 70 57 89 36 38 51 62 23 86 18 55 30 37 52 21 59 60 15 78 84 23 98 44 78 68 94 49 59 43 63 91 71 9 75 89 76 23 100 59 18 97 89 2 25 33 59 48 84 50 78 71 84 3 96 60 7 38 11 16 99 41 11 91 65 8 10 29 14 88 7 70 80 56 38 54 16 42 1 70 1 96 97 62 82 42 17 84 96 73 77 78 85 82 27 72 33 57 38 57 95 76 59 32 26 76 9 22 19 88 14 43 46 13 20 7 7 62 58 76 54 92 35 78 17 86 5 86 27 44 75 76 15 21 34 15 14 83 62 95 40 42 45 16 10 38 77 1 90 72 27 72 22 75 93 49 82 52 95 6 76 55 66 66 53 85 70 61 38 64 22 33 58 50 63 39 35 90 54 53 45 71 95 93 78 51 47 94 81 6 26 22 18 1 82 77 86 49 100 5 88 40 4 60 79 26 88 38 12 81 70 95 80 37 28 57 80 68 1 43 9 10 42 16 18 67 99 3 41 50 35 48 42 42 16 47 11 75 52 76 33 60 10 47 96 5 12 10 86 61 80 86 58 45 63 95 33 51 38 45 95 2 49 76 10 50 3 62 39 94 47 33 54 99 76 60 57 2 8 47 18 90 28 99 66 47 8 95 85 25 42 90 27 66 100 22 18 93 95 83 27 89 4 21 39 80 46 14 46 58 55 12 83 95 99 3 86 8 43 92 24 72 7 47 34 78 77 87 100 3 11 72 86 37 48 68 28 9 92 59 95 39 59 97 64 21 95 94 25 48 42 91 76 16 97 72 71 49 24 30 18 90 64 10 44 6 87 95 37 90 52 37 53 86 54 95 11 28 83 12 65 87 73 58 83 9 85 20 15 73 21 39 87 73 75 44 50 99 37 92 82 66 68 60 72 60 25 72 35 11 67 4 86 1 10 3 79 28 2 44 29 33 71 22 99 13 77 3 36 54 17 61 79 77 83 34 39 31 100 46 23 54 83 3 13 62 31 81 58 17 16 92 54 92 39 51 37 68 94 63 73 26 45 1
Your output
12257
Your output does not contain
12595

i passed one of the tests but these 2 are only slightly off and i dont know why.
please provide a solution in C++

Solutions

Expert Solution

Code:

#include <bits/stdc++.h>
#define ll long long
#define MAX 2000000
using namespace std;
int main() {
    ll n,k;
    // Take the number input
    cin>>n>>k;
    // Declare array 
    ll arr[n+1];
    // Take the array input
    for(int i=0;i<n;i++) {
        cin>>arr[i];
    }
    // Declare array to store prefix sum
    ll prefix[n+1];
    // Initialize prefix array
    prefix[0]=arr[0];
    // Calculate ans store prefix sum in the prefix array
    for(int i=1;i<n;i++) {
        prefix[i]=prefix[i-1]+arr[i];
    }
    // Declare and initialize variable to store answer 
    ll ans=0;
    // Loop 0 until k-1 (k times)
    for(int i=0;i<k;i++){
        // sliding window of size k to calculate the maxsum
        ll temp=prefix[i]+prefix[n-1]-prefix[n-k+i];
        ans=max(ans,temp);
    }
    cout<<ans;
    return 0;
}

Screenshots:

Output:

-------------------------END---------------------

Please give a thumbs up(upvote) if you liked the answer.


Related Solutions

First time working with stack implementation. Newbie to java Two stacks of positive integers are needed,...
First time working with stack implementation. Newbie to java Two stacks of positive integers are needed, both containing integers with values less than or equal to 1000. One stack contains even integers, the other contains odd integers. The total number of elements in the combined stacks is never more than 200 at anytime. but we cannot predict how many are in each stack. (All of the elements could be in one stack, they could be evenly divided, both stacks could...
Suppose that two stacks of positive integers are needed for a project. Each stack is to...
Suppose that two stacks of positive integers are needed for a project. Each stack is to contain integers that are less than or equal to 500. One stack is to contain even integers; the other stack is to contain odd integers. Also, the total number of values in the combined stacks at any given time will not exceed 200. ▪ Design a way to implement both stacks in only one(pay attention!!!) 1-D array. ▪ Write a Python class definition(s) for...
C++ Progamming This lab gives you a little practice with stacks and queues ·In “stackfib.cpp”, write...
C++ Progamming This lab gives you a little practice with stacks and queues ·In “stackfib.cpp”, write a non-recursive function fib() which: ·Takes a single int parameter n ·Returns the nth Fibonacci number. We will start with fib(0) == fib(1) == 1, then fib(n) = fib(n-1) + fib(n-2) ·To compute this without using recursion, we use a stack to store the numbers we need to compute (1)   Initialize your result to be 0 (2)   Push the parameter n onto the stack (3)   While the...
JAVA- List, Stacks, Queues, Sets, And Maps Question 1 Given that you want to be able...
JAVA- List, Stacks, Queues, Sets, And Maps Question 1 Given that you want to be able to return the items that come immediately before and after a given node. Which variation of a list would be best suited? 1. Circular single-linked list 2. All options are equally good 3. Double linked list 4. Single linked list with header and trailer nodes 5. Single-linked list Question 2 One of the statements is correct for stacks and queues 1. Both data structures...
Given C++ Stack Code, Modify the code to work like a Queue.(First in First out) Stack...
Given C++ Stack Code, Modify the code to work like a Queue.(First in First out) Stack #ifndef STACK_H #define STACK_H #include "Node.h" template class Stack { private: Node* top; public: // Constructor Stack() { top = nullptr; } void push(Object ab) { if (top != nullptr) { Node* newNode = new Node(ab, *top); top = newNode; } else { Node* newNode = new Node(ab); top = newNode; } } Object pop() { if (top != nullptr) { Node *returnVal =...
The purpose of this problem is to gain familiarity with stacks and queues. You have three...
The purpose of this problem is to gain familiarity with stacks and queues. You have three jugs that can hold c1, c2, and c3 liters of water, respectively. Initially, jug 1 is full and the other two jugs are empty. You can repeat the following procedure any number of times: Choose two of the jugs and pour the contents of one into the other until either the first is empty or the second is full. Your goal is to end...
Difference between stacks and queues? Explain in your own words.
Difference between stacks and queues? Explain in your own words.
(C++ Programming) Practice with Stacks and Queues (PLEASE FOLLOW ALL DIRECTIONS) ·In “stackfib.cpp”, write a non-recursive...
(C++ Programming) Practice with Stacks and Queues (PLEASE FOLLOW ALL DIRECTIONS) ·In “stackfib.cpp”, write a non-recursive function fib() which: ·Takes a single int parameter n ·Returns the nth Fibonacci number. We will start with fib(0) == fib(1) == 1, then fib(n) = fib(n-1) + fib(n-2) ·To compute this without using recursion, we use a stack to store the numbers we need to compute (1)   Initialize your result to be 0 (2)   Push the parameter n onto the stack (3)   While the stack is...
C++ language or Python. Linked Lists You are given a linked list that contains N integers....
C++ language or Python. Linked Lists You are given a linked list that contains N integers. You are to perform the following reverse operation on the list: Select all the subparts of the list that contain only even integers. For example, if the list is {1,2,8,9,12,16}, then the selected subparts will be {2,8}, {12,16}. Reverse the selected subpart such as {8,2} and {16,12}. The list should now be {1,8,2,9,16,12}. Your node definition should consist of 2 elements: the integer value...
In C language using stacks: Activity: Using Stack, check whether the following is balanced or not...
In C language using stacks: Activity: Using Stack, check whether the following is balanced or not : “{ ( ) } ) ” -Assume a stack of Max_Size = 6 -Draw the stack for each step and show the value of “top” -If any decision is made (valid/invalid), then write the reason 11
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT