Submission #918295

#TimeUsernameProblemLanguageResultExecution timeMemory
918295amirhoseinfar1385Cloud Computing (CEOI18_clo)C++17
100 / 100
1038 ms2388 KiB
#include<bits/stdc++.h>
using namespace std;
struct noe{
	long long ci,fi,vi;
};
const int maxa=100000+5,maxn=2000;
long long n,m,dp[2][maxa],inf=1e15;
vector<noe>alln,allm;
bool cmp(pair<int,pair<int,int>> a,pair<int,pair<int,int>> b){
	if(a.first==b.first){
		return a.second.first<b.second.first;
	}
	return a.first<b.first;
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n;
	alln.resize(n+1);
	for(int i=0;i<2;i++){
		for(int j=0;j<maxa;j++){
			dp[i][j]=-inf;
		}
	}
	for(int i=0;i<n;i++){
		cin>>alln[i].ci>>alln[i].fi>>alln[i].vi;
	}
	cin>>m;
	allm.resize(m+1);
	for(int i=0;i<m;i++){
		cin>>allm[i].ci>>allm[i].fi>>allm[i].vi;
	}
	vector<pair<int,pair<int,int>>>fake;
	for(int i=0;i<n;i++){
		fake.push_back(make_pair(alln[i].fi,make_pair(2,i)));
	}
	for(int i=0;i<m;i++){
		fake.push_back(make_pair(allm[i].fi,make_pair(1,i)));
	}
	dp[1][0]=0;
	sort(fake.begin(),fake.end(),cmp);
	for(int i=(int)fake.size()-1;i>=0;i--){
		swap(dp[1],dp[0]);
	//	cout<<fake[i].first<<"\n";
		for(int j=0;j<maxa;j++){
			dp[1][j]=-inf;
		}
		if(fake[i].second.first==1){
			int ind=fake[i].second.second;
			for(int j=0;j<maxa;j++){
				if(j<allm[ind].ci){
					dp[1][j]=max(dp[1][j],dp[0][j]);
					continue;
				}
				dp[1][j]=max(dp[1][j],dp[0][j]);
				dp[1][j-allm[ind].ci]=max(dp[1][j-allm[ind].ci],dp[0][j]+allm[ind].vi);
			}
		}
		else{
			int ind=fake[i].second.second;
			for(int j=0;j<maxa;j++){
				if(j+alln[ind].ci>=maxa){
					dp[1][j]=max(dp[1][j],dp[0][j]);
					continue;
				}
				dp[1][j]=max(dp[1][j],dp[0][j]);
				dp[1][j+alln[ind].ci]=max(dp[1][j+alln[ind].ci],dp[0][j]-alln[ind].vi);
			}
		}
	}
	long long res=0;
	for(int i=0;i<maxa;i++){
		res=max(res,dp[1][i]);
	}
	cout<<res<<"\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...