Thứ Tư, 27 tháng 4, 2022

TOWER1035 C++

#include <bits/stdc++.h>
using namespace std;
int n;
long long f[100001];
struct da{
    long long a,b,g;
};
da a[100001];
void nhap()
{
    int t;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i].a>>a[i].b>>a[i].g;
        if(a[i].a>a[i].b)
        {
            t=a[i].a;a[i].a=a[i].b;a[i].b=t;
        }
    }
}
bool ss(da &x, da &y)
{
    if(x.a * x.b < y.a * y.b) return false;
    if(x.a * x.b > y.a * y.b) return true;
    return false;
}
void giai()
{
    int imax;
    sort(a+1,a+n+1,ss);
    f[0]=0; f[1]=a[1].g;
    for(int i=2;i<=n;i++)
    {
        imax = 0;
        for(int j=1;j<=i-1;j++)
            if(a[j].a>=a[i].a&&a[j].b>=a[i].b&&f[j]>f[imax])
                imax = j;
        f[i] = f[imax]+a[i].g;
    }
    long long res =0;
    for(int i=1;i<=n;i++)
        res = max(res,f[i]);
    cout<<res;
}
int main()
{
    ios_base::sync_with_stdio(0);
    cout.tie(0);
    cin.tie(0);
    freopen("tower1035.inp","r",stdin);
    freopen("tower1035.out","w",stdout);
    nhap();
    giai();
}

Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.