Submission #827345

#TimeUsernameProblemLanguageResultExecution timeMemory
827345PanosPaskCloud Computing (CEOI18_clo)C++14
100 / 100
413 ms2060 KiB
#include <bits/stdc++.h> #define pb push_back using namespace std; typedef long long ll; const ll INF = 1e18; struct Event { int profit_change; int core_change; int rate; bool operator < (Event b) { if (this->rate == b.rate) return this->core_change > b.core_change; return this->rate > b.rate; } }; int N, M; // dp[i][j]: After the first i events (sorted in clock rate), maximum profit with at least j cores left over vector<ll> dp; vector<ll> prv; vector<Event> events; int main(void) { scanf("%d", &N); for (int i = 0; i < N; i++) { int c, f, v; scanf("%d %d %d", &c, &f, &v); events.pb({-v, c, f}); } scanf("%d", &M); for (int i = 0; i < M; i++) { int c, f, v; scanf("%d %d %d", &c, &f, &v); events.pb({v, -c, f}); } sort(events.begin(), events.end()); prv.assign(N * 50 + 1, -INF); dp.resize(N * 50 + 1); prv[0] = 0; for (int i = 1; i <= N + M; i++) { int cores = events[i - 1].core_change; int v = events[i - 1].profit_change; for (int j = 0; j <= N * 50; j++) { dp[j] = prv[j]; if (j - cores >= 0 && j - cores <= N * 50 && prv[j - cores] != -INF) dp[j] = max(dp[j], prv[j - cores] + v); } swap(dp, prv); } ll ans = 0; for (int i = 0; i <= N * 50; i++) ans = max(ans, prv[i]); printf("%lld\n", ans); }

Compilation message (stderr)

clo.cpp: In function 'int main()':
clo.cpp:32:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |     scanf("%d", &N);
      |     ~~~~~^~~~~~~~~~
clo.cpp:37:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 |         scanf("%d %d %d", &c, &f, &v);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
clo.cpp:42:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   42 |     scanf("%d", &M);
      |     ~~~~~^~~~~~~~~~
clo.cpp:45:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   45 |         scanf("%d %d %d", &c, &f, &v);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#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...