My implementation, can anyone offer my test cases that i can verify?

struct Deal
{
    unsigned int nStartIndex;
    unsigned int nEndIndex;
    unsigned int nSum;

    Deal()
    {
        nStartIndex = 0;
        nEndIndex = 0;
        nSum = 0;
    }
};

int findBestDeal( const std::vector<unsigned int>& iHotelPrices, unsigned
int iLotteryPrice, Deal& bestDeal)
{
    /* for loop to find a. best solution in history
                        b. best solution end with j-1
    */

    Deal bestPotential;

    for (unsigned int i=0; i<iHotelPrices.size(); i++)
    {
        unsigned int nTemp = bestPotential.nSum + iHotelPrices[i];

        if ( nTemp <= iLotteryPrice)
        {
            bestPotential.nSum = nTemp;
            bestPotential.nEndIndex = i;
        }
        else
        {
            int nStepCount = 0;
            unsigned int newTemp = nTemp;
            do
            {
                newTemp -=
iHotelPrices[bestPotential.nStartIndex+nStepCount];
                nStepCount ++;
            }
            while (newTemp > iLotteryPrice);

            // better solution
            bestPotential.nSum = newTemp;
            bestPotential.nEndIndex = i;
            bestPotential.nStartIndex += nStepCount;
        }

        if (bestPotential.nSum > bestDeal.nSum)
        {
            bestDeal = bestPotential;
        }
    }

    return 0;
}



On Wed, Dec 7, 2011 at 4:58 AM, GIRIDHAR IS <[email protected]> wrote:

> @sourabh
>
> can you explain me how it will work for this example????
> a[]={2,7,3,4,5,8,10}
>
>
> On Dec 7, 12:17 am, sourabh singh <[email protected]> wrote:
> > @ sourabh :-) yep, got your point... it wont work for all cases.
> > but
> > if we set initial max to a negative value . say max possible 64 bit
> > -ve number.then ?
> > point is though the code has limitations it will work fine mostly.
> >
> > On 12/5/11, sourabh <[email protected]> wrote:
> >
> >
> >
> >
> >
> >
> >
> > > @sourabh singh..
> >
> > > Hey u don't need an example... I see a check "sum > max" in ur code to
> > > calculate the max value, ryt ? Now ur initial value of max is set to
> > > 1. That means ur always assuming that the value whose closest is to be
> > > found is >= 1 , which is incorrect. What do you think ?
> >
> > > On Dec 6, 12:24 am, sourabh singh <[email protected]> wrote:
> > >> @ sourabh tried some cases its working on -ve as well. pls post some
> > >> case in which it might not work.
> >
> > >> On 12/5/11, sourabh <[email protected]> wrote:
> >
> > >> > @sourabh..
> >
> > >> > I don't think it will work for all the cases.. did u consider
> negative
> > >> > integers as well... what i can understand from the above code is
> that
> > >> > u have taken 2 pointers of which one points to the beginning of the
> > >> > subarray and other one at the end of the subarray and u r shifting
> the
> > >> > pointers based on the closest value.. this app is fine for non-
> > >> > negative integers but will fail when the given input contains both
> neg
> > >> > and pos integers...
> >
> > >> > On Dec 5, 4:25 pm, sourabh singh <[email protected]> wrote:
> > >> >> @ mohit my first post on here. this solution got ac  in spoj
> >
> > >> >> main()
> > >> >> {
> > >> >>            unsigned int n,m,sum,max,i,j;
> > >> >>                 sum=0;max=1;
> > >> >>                 n=in.ReadNextUInt();
> > >> >>                 m=in.ReadNextUInt();
> > >> >>                 unsigned int *a = new unsigned int[n];
> > >> >>                     unsigned int *p = a;
> > >> >>                 for (i=0; i < n; i++)
> > >> >>                             *(p++) = in.ReadNextUInt();
> > >> >>                     i=0;
> > >> >>                 j=0;
> > >> >>                 while(j<n)
> > >> >>                 {
> > >> >>                          sum+=a[j++];
> > >> >>                          while(sum>m)
> > >> >>                          {
> > >> >>                                      sum-=a[i++];
> > >> >>                          }
> > >> >>                          if(sum>max)
> > >> >>                                     max=sum;
> > >> >>                 }
> > >> >>                 out.WriteUInt(max,'\n');
> >
> > >> >>        out.Flush();
> > >> >>        return 0;
> >
> > >> >> }
> >
> > >> >> On 11/28/11, Mohit kumar lal <[email protected]> wrote:
> >
> > >> >> > Given a array of positive integers ,You have to find the largest
> sum
> > >> >> > possible from consecutive sub-array but sum should be less than
> or
> > >> >> > equal
> > >> >> > to
> > >> >> > K and also find that sub-array. Ex- array={2,1,3,4,5} k=12,
> > >> >> >  ans->12, sub-array={3,4,5}
> >
> > >> >> > Firstly i tried with brute-force and then i also tried to solve
> it by
> > >> >> > DP
> > >> >> > but complexity were same ( O(n^2)) ....so plz try to provide a
> > >> >> > solution
> > >> >> > for
> > >> >> > O(nlgn) or O(n).
> >
> > >> >> > --
> > >> >> > Mohit kumar lal
> >
> > >> >> > IIIT ALLAHABAD
> >
> > >> >> > --
> > >> >> > You received this message because you are subscribed to the
> Google
> > >> >> > Groups
> > >> >> > "Algorithm Geeks" group.
> > >> >> > To post to this group, send email to [email protected].
> > >> >> > To unsubscribe from this group, send email to
> > >> >> > [email protected].
> > >> >> > For more options, visit this group at
> > >> >> >http://groups.google.com/group/algogeeks?hl=en.
> >
> > >> > --
> > >> > You received this message because you are subscribed to the Google
> > >> > Groups
> > >> > "Algorithm Geeks" group.
> > >> > To post to this group, send email to [email protected].
> > >> > To unsubscribe from this group, send email to
> > >> > [email protected].
> > >> > For more options, visit this group at
> > >> >http://groups.google.com/group/algogeeks?hl=en.
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups
> > > "Algorithm Geeks" group.
> > > To post to this group, send email to [email protected].
> > > To unsubscribe from this group, send email to
> > > [email protected].
> > > For more options, visit this group at
> > >http://groups.google.com/group/algogeeks?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to