Submission #242960

#TimeUsernameProblemLanguageResultExecution timeMemory
242960LawlietCloud Computing (CEOI18_clo)C++17
100 / 100
648 ms2168 KiB
#include <bits/stdc++.h> using namespace std; typedef long long int lli; const int MAXS = 2000*50 + 10; struct event { int type, cmp; int qtd, price; event(int t, int q, int p, int c) : type(t), qtd(q), price(p), cmp(c) {} bool operator < (event a) { if( cmp != a.cmp ) return cmp < a.cmp; return type > a.type; } }; int n, m; lli dp[2][MAXS]; vector<event> v; int main() { scanf("%d",&n); int sum = 0; for(int i = 1 ; i <= n ; i++) { int q, c, p; scanf("%d %d %d",&q,&c,&p); sum += q; v.push_back( event( 0 , q , p , c ) ); } scanf("%d",&m); for(int i = 1 ; i <= m ; i++) { int q, c, p; scanf("%d %d %d",&q,&c,&p); v.push_back( event( 1 , q , p , c ) ); } sort( v.begin() , v.end() ); for(int i = 1 ; i <= n + m ; i++) { int qtd = v[i - 1].qtd; int type = v[i - 1].type; int price = v[i - 1].price; for(int j = 0 ; j <= sum ; j++) { lli& ans = dp[i%2][j]; ans = dp[1 - i%2][j]; if( type == 0 ) ans = max( ans , dp[1 - i%2][j + qtd] - price ); else if( j >= qtd ) ans = max( ans , dp[1 - i%2][j - qtd] + price ); } } printf("%lld\n",dp[ (n + m)%2 ][0]); }

Compilation message (stderr)

clo.cpp: In constructor 'event::event(int, int, int, int)':
clo.cpp:11:11: warning: 'event::price' will be initialized after [-Wreorder]
  int qtd, price;
           ^~~~~
clo.cpp:10:12: warning:   'int event::cmp' [-Wreorder]
  int type, cmp;
            ^~~
clo.cpp:13:2: warning:   when initialized here [-Wreorder]
  event(int t, int q, int p, int c)
  ^~~~~
clo.cpp: In function 'int main()':
clo.cpp:31:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&n);
  ~~~~~^~~~~~~~~
clo.cpp:38:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d %d",&q,&c,&p);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~
clo.cpp:45:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&m);
  ~~~~~^~~~~~~~~
clo.cpp:50:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d %d",&q,&c,&p);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~
#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...