Submission #1193620

#TimeUsernameProblemLanguageResultExecution timeMemory
1193620Bui_Quoc_CuongCloud Computing (CEOI18_clo)C++20
100 / 100
223 ms1292 KiB
#pragma GCC optimize("O2")
#pragma GCC target("avx,avx2,fma")
#include <bits/stdc++.h>
using namespace std;
#define ALL(A) A.begin(), A.end()
#define FOR(i, a, b) for(int i = (a); i <= (int)(b); i++)
#define FORD(i, a, b) for(int i = (a); i >= (int)b; i--)
#define TIME (1.0 * clock() / CLOCKS_PER_SEC)
#define fi first
#define se second
const int oo = (int) 2e9;
const long long INF = (long long) 1e18;
const int MAXN = (int) 4e5 + 5;

int N, M;
struct Computer {
	int c, f, v;
} com[MAXN];

struct Bills {
	int c, f, v;
} bill[MAXN];

long long dp[MAXN];

signed main(void) {
    ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
    
    #define Hori "" 
    if (fopen(Hori".inp", "r")) {
        freopen(Hori".inp", "r", stdin);
        freopen(Hori".out", "w", stdout);
    }
    
    cin >> N;
    for (int i = 1; i <= N; i++) {
    	cin >> com[i].c >> com[i].f >> com[i].v;
    }
    
    cin >> M;
    for (int i = 1; i <= M; i++) {
    	cin >> bill[i].c >> bill[i].f >> bill[i].v;
    }

    sort(com + 1, com + 1 + N, [&](Computer u, Computer v) {
    	return u.f > v.f;
    });

    sort(bill + 1, bill + 1 + M, [&](Bills u, Bills v) {
    	return u.f > v.f;
    });

    FOR(i, 0, 100000) dp[i] = - INF;		
    int sum = 0, j = 1;	
    long long ans = 0;

    dp[0] = 0;
    for (int i = 1; i <= M; i++) {
    	while (j <= N && com[j].f >= bill[i].f) {
    		sum+= com[j].c;
    		for (int x = sum; x >= com[j].c; x--) {
    			dp[x] = max(dp[x], dp[x - com[j].c] - com[j].v);
    		}
    		j++;
    	}	
 		for (int x = bill[i].c; x <= sum; x++) {
 			dp[x - bill[i].c] = max(dp[x - bill[i].c], dp[x] + bill[i].v);
 			ans = max(ans, dp[x - bill[i].c]);
 		}
    }

    cout << ans;

    return void(cerr << "KO :" << TIME << "s "), (0 ^ 0);
}

Compilation message (stderr)

clo.cpp: In function 'int main()':
clo.cpp:31:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   31 |         freopen(Hori".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
clo.cpp:32:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |         freopen(Hori".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...