제출 #1154393

#제출 시각아이디문제언어결과실행 시간메모리
1154393nikdCloud Computing (CEOI18_clo)C++20
72 / 100
684 ms2116 KiB
#include <bits/stdc++.h>
#define BG 1e5
#define ll long long
using namespace std;


int main(){
    int n; cin >> n;
    vector<int> c(n);
    vector<int> f(n);
    vector<int> v(n);
    for(int i = 0; i<n; i++) cin >> c[i] >> f[i] >> v[i];
    int m; cin >> m;
    vector<int> C(m);
    vector<int> F(m);
    vector<int> V(m);
    for(int i = 0; i<m; i++) cin >> C[i] >>F[i] >> V[i];
    vector<ll> knap(BG+1, -(1ll<<60));
    vector<ll> last(BG+1, -(1ll<<60));

    vector<int> q(n+m);
    iota(q.begin(), q.end(), 0);
    auto get = [&](int i, int val)-> int{
        if(i>=n){
            if(val == 0) return -C[i-n];
            if(val==1) return F[i-n];
            if(val==2) return V[i-n];
        }
        if(val==0) return c[i];
        if(val==1) return f[i];
        if(val==2) return -v[i];
    };
    sort(q.begin(), q.end(), [&](int a, int b)->bool{
        //if( get(a, 1) == get(b, 1)) return a > b;
        return get(a, 1) > get(b, 1);
    });
    knap[0] = 0;
    for(int i: q){
        last = knap;
        for(int j = 0; j<=BG; j++){
            if(j-get(i, 0) >= 0 && j-get(i, 0) <= BG && last[j-get(i, 0)] != -(1ll<<60)){
                knap[j] = max(knap[j], last[j-get(i, 0)]+get(i, 2));
            }
        }
    }
    ll sol = 0;
    for(int i = 0; i<=BG; i++) sol = max(sol, knap[i]);
    cout << sol << '\n';
}

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

clo.cpp: In lambda function:
clo.cpp:32:5: warning: control reaches end of non-void function [-Wreturn-type]
   32 |     };
      |     ^
#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...