➤ Problem Link : 331A2. Oh Sweet Beaverette
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
int main()
{
int n;
cin>>n;
unordered_map<ll,int> right;
ll arr[n+1];
ll poscum[n+1];
poscum[0]=0;
for(int i=1;i<=n;i++)
{
cin>>arr[i];
right[arr[i]]=i;
if(arr[i]>0)
poscum[i]=arr[i]+poscum[i-1];
else
poscum[i]=poscum[i-1];
}
ll diff=LONG_MIN,li=-1,ri=-1;
ll currdiff;
for(int i=1;i<=n;i++)
{
int ind = right[arr[i]];
if(ind <= i)
continue;
currdiff=poscum[ind]-poscum[i-1];
if(arr[i]<0)
currdiff+=arr[i]*2;
if(currdiff > diff)
{
diff=currdiff;
li=i;
ri=ind;
}
}
vector<ll> cut;
ll ans=0;
for(int i=1;i<=n;i++)
{
if(i<li || i>ri)
cut.push_back(i);
else if(i>li && i < ri && arr[i]<0)
cut.push_back(i);
else
ans+=arr[i];
}
cout<<ans<<" "<<cut.size()<<"\n";
for(auto it : cut)
cout<<it<<" ";
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
