I couldn’t work out a solution for this, can anyone please share their approach?
Case 1 : Let’s say you are at 10th box whose Si = 20 and minimum Si found till Box 1 —> 9, say = 11, then you cannot put more than 11 tokens in 10th box, so, 10th box will hold minimum found so far
Case 2 : Let’s say you are at 10th box whose Si = 6 and minimum Si found till Box 1 —> 9, say = 11, then you cannot put more than 6 tokens in 10th box, so, 10th box will 6 tokens. Hence going foward, irrespective of say 11th box value, you will not reach 11th box more than 6 times.
Repeat the process.
Did you get it bro?
Yes it did make so much sense now, I should’ve thought of it myself! Thanks for the insight brother, much appreciated.
Yes it did make so much sense now, I should’ve thought of it myself! Thanks for the insight brother, much appreciated.
i got 50 marks in this prob
should i share mt code / algo?
yes you can
Hey bro, You have written so much code for a question which can be solved in 4 to 5 lines. Can you pl check my solution. Hope it helps!
My code was doing the same, can you just check if my logic was correct?
#include <bits/stdc++.h>
using namespace std;
std::unordered_map<string,int> freq;
typedef long long int ll;
// Driver code
int main()
{
ll t;
cin>>t;
for(int i=0;i<t;i++)
{
ll n;
cin>>n;
ll arr[n];
for(int j=0;j<n;j++)
{
cin>>arr[j];
}
ll e,pos=0,l;
for(int j=0;j<n-1;j++)
{ //cout<<"gussa2"<<endl;
if(arr[j+1]<arr[j])
{
e=arr[j+1];
pos=j+1;
}
}
if(pos==0)
{
l=arr[0]*n;
cout<<l<<endl;
}
else if(pos==n-1)
{ ll sum=0;
for(int j=0;j<n;j++)
{
sum+=arr[j];
}
cout<<sum<<endl;
}
else
{
l=n*e+pos;
cout<<l<<endl;
}
}
}