POJ 1036

#include<iostream>
#include<algorithm>
#define MAXN 205
using namespace std;

struct node 
{
    int time;
    int money;
    int state;
    int ans;
    bool b;
};

node _m[MAXN];
int n;
void sort_f();
int compare(const void * i,const void * j);
int main()
{
    //freopen("acm.acm","r",stdin);
    int k;
    int t;
    int i;
    int j;
    int max = 0;
    int tem;
    bool boo = false;
    bool b1;
    cin>>n>>k>>t;
    _m[0].ans = 0;
    _m[0].money = 0;
    _m[0].state = 0;
    _m[0].time = 0;
    for(i = 0; i <= n; ++ i)
    {
        _m[i].ans = 0;
        _m[i].b = true;
    }
    for(i = 1; i <= n; ++ i)
    {
        cin>>_m[i].time;
    }
    for(i = 1; i <= n; ++ i)
    {
        cin>>_m[i].money;
    }
    for(i = 1; i <= n; ++ i)
    {
        cin>>_m[i].state;
    }
    sort_f();
    for(i = 1; i <= n; ++ i)
    {
        if(_m[i].time < _m[i].state)
        {
            _m[i].b = false;
            continue;
        }
        for(j = 0; j < i; ++ j)
        {
            if( (abs(_m[i].state - _m[j].state) <= (_m[i].time - _m[j].time) )&& _m[j].b)
            {
                if(_m[i].ans < (tem = _m[i].money + _m[j].ans) )
                {
                    _m[i].ans = tem;
                }
            }
        }
    }
    for(i = 1; i <= n; ++ i)
    {
        if(max < _m[i].ans)
        {
            max = _m[i].ans;
        }
    }
    cout<<max<<endl;
}
void sort_f()
{
    int i;
    int j;
    int k;
    for(i = 0; i <= n; ++ i)
    {
        for(j = i+1; j <= n; ++ j)
        {
            if(_m[j].time < _m[i].time)
            {
                iter_swap(&_m[i],&_m[j]);
            }
        }
    }
}

关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。 

技术网站地址: vmfor.com

原文地址:https://www.cnblogs.com/gavinsp/p/4563223.html