Can you provide example input and output ?

On Thu, May 12, 2011 at 9:32 AM, ganesha <[email protected]> wrote:

> Can some one help in finding out the bug in the below code.
>
> Input: (left,right,weight) representing intervals
> Output: maximum weight of non-overlapping intervals
>
> #include <iostream>
> #include <vector>
> #include <math.h>
> #include <algorithm>
>
> struct point
> {
>        int value;
>        bool isLeft;
>        long int weight;
>        int index;
>        struct point* prev;
> };
>
> typedef struct point* NODEPTR;
>
> bool compare (NODEPTR A,NODEPTR B)
> {
>        return (A->value < B->value);
> }
>
> int main()
> {
>
>        int numIntervals;
>        cin >> numIntervals;
>
>        // read the intervals and sort the list
>        vector<NODEPTR> points;
>
>        for (int i=0; i < numIntervals; i++)
>        {
>                NODEPTR p1 = new point;
>                p1->isLeft = true;
>                p1->weight = 0;
>                p1->prev = NULL;
>                cin >> p1->value;
>                points.push_back(p1);
>
>                NODEPTR p2 = new point;
>                p2->isLeft = false;
>                p2->prev = p1;
>                cin >> p2->value;
>                cin >> p2->weight;
>                points.push_back(p2);
>        }
>
>        sort(points.begin(),points.end(),compare);
>
>
>        vector<NODEPTR>::iterator it;
>        int idx=1;
>        for (it=points.begin(); it!=points.end(); ++it)
>        {
>            (*it)->index = idx++;
>        }
>
>        /*for (it=points.begin(); it!=points.end(); ++it)
>        {
>                if ((*it)->prev != NULL)
>                        cout << (*it)->prev->value << " " << (*it)->value <<
> " " << (*it)-
> >weight << " " << (*it)->prev->index << endl;
>        }*/
>
>
>        int score[2*numIntervals + 1];
>        for (int i=0; i <= 2*numIntervals; i++)
>        {
>                score[i] = 0;
>        }
>
>        int i = 1;
>        for (it=points.begin(); it!=points.end(); ++it)
>        {
>                // right end of the interval
>                if (false == (*it)->isLeft)
>                {
>                        int j = (*it)->prev->index;
>
>                        int t1 = score[j] + (*it)->weight;
>                        int t2 = score[i-1];
>
>                        if (t1 < t2)
>                                score[i] = t2;
>                        else
>                                score[i] = t1;
>                }
>                else
>                {
>                        score[i] = score[i-1];
>                }
>
>                i++;
>        }
>
>        cout << "Max weight is " << score[2*numIntervals] << " " <<
> 2*numIntervals << endl;
>
>        return 0;
> }
>
> --
> 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.
>
>


-- 
regards,
chinna.

-- 
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