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;
}
}
}
```