제출 #1243177

#제출 시각아이디문제언어결과실행 시간메모리
1243177shiori_chanCloud Computing (CEOI18_clo)C++20
100 / 100
743 ms2464 KiB
#include <iostream>
#include <vector>
#include <random>
#include <algorithm>
#include <chrono>
#include <cstring>
#define all(x) x.begin(), x.end()

using namespace std;
typedef long long ll;
#define int long long

const int nd = 2e3 + 1;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
uniform_int_distribution<int> dist(1 , (int)2e9);

struct node{
	bool type;
	int c , f , v;
	node(){}
	node(bool type , int c , int f , int v) : type(type) , c(c) , f(f) , v(v){}

	bool operator<(const node& o) const{
		if(o.f == f) return (type && !o.type);
		return f > o.f;
	}
};
vector <node> a;
int dp[2][50 * nd];
bool build[2][50 * nd];

void solve(){
	int n; cin >> n;
	//memset(dp[0] , -0x3f , sizeof(dp[0])); memset(dp[1] , -0x3f , sizeof(dp[1]));
	for(int i = 1;i <= n; ++ i){
		int c , f , v; cin >> c >> f >> v;
		a.push_back(node(true , c , f , - v));
	}
	int m; cin >> m;
	for(int i = 1;i <= m; ++ i){
		int c , f , v; cin >> c >> f >> v;
		a.push_back(node(false , -c , f , v));	
	}

	sort(all(a));

	int res = 0;
	build[0][0] = true;
	build[1][0] = true;

	for(auto [type , c , f , v] : a){
		//cout << type << " " << c << " " << f << " " << v << '\n';
		for(int i = 0; i < 50 * nd; ++ i) if(i + c >= 0 && i + c < 50 * nd){
			//if(build[0][i]) build[0][]
			if((dp[1][i + c] < dp[0][i] + v || !build[1][i + c]) && build[0][i]){
				build[1][i + c] = true;
				dp[1][i + c] = dp[0][i] + v;
			}
			//cout << i << " " << build[1][i] << '\n';
		}
		
		for(int i = 0; i < 50 * nd; ++ i){
			dp[0][i] = dp[1][i] , res = max(res , dp[1][i]) , 
			build[0][i] = build[1][i]; 
			//cout << i << " " << dp[0][i] << " " << build[0][i] << '\n';
		}
	}
	cout << res;
}

signed main() {
   ios_base::sync_with_stdio(false);
   cin.tie(0);

	#define task "task" 
	if(fopen(task".inp", "r")) {
		freopen(task".inp", "r", stdin);
		freopen(task".out", "w", stdout);
	}
	solve();

	return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

clo.cpp: In function 'int main()':
clo.cpp:77:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   77 |                 freopen(task".inp", "r", stdin);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
clo.cpp:78:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   78 |                 freopen(task".out", "w", stdout);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#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...