301

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct order{
       int start;
       int dest;
       int pss;
       int prft;
       };

vector<order> vb;
int cap,b,num_order;
int result;
int passenger_cap[10];


int solve(int position_order,int max)
{
    if(result<max)
    result=max;
    int f;
    while(position_order<=(num_order-1))
    {
        f=0;
        for(int i=vb[position_order].start;i<vb[position_order].dest;i++)
        {
            passenger_cap[i]+=vb[position_order].pss;
            if(passenger_cap[i]>cap)
            {
               f=1;
               //break;
            }
        }
        if(!f)
        {
           solve(position_order+1,max+vb[position_order].prft);
        }

        for(int i=vb[position_order].start;i<vb[position_order].dest;i++)
                passenger_cap[i]-=vb[position_order].pss;
        position_order++;
    }
    return 0;
}


int main()
{
    int x,y,z;
    order o;
    while(cin>>cap)
    {
       cin>>b>>num_order;
       if(cap==0 && b==0 && num_order==0)
       break;
       vb.clear();
       for(int i=0;i<num_order;i++)
       {
           cin>>x>>y>>z;
           o.start=x;
           o.dest=y;
           o.pss=z;
           o.prft=(y-x)*z;

           vb.push_back(o);
       }
       for(int i=0;i<10;i++)
              passenger_cap[i]=0;
       result=0;

       solve(0,0);
       cout<<result<<"\n";
    }

    return 0;
}

 

Leave a Reply

Your email address will not be published. Required fields are marked *