Chủ Nhật, 24 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.