답안 #162999

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
162999 2019-11-10T17:35:37 Z Akashi Cloud Computing (CEOI18_clo) C++14
0 / 100
2 ms 508 KB
#include <bits/stdc++.h>
using namespace std;

struct usu{
    int c, f, v, t;
    bool operator < (const usu &aux)const{
        if(f != aux.f) return f < aux.f;
        return t > aux.t;
    }
};

usu a[4005];

int n, nr;
long long d[2][20005];

int main()
{
    freopen("1.in", "r", stdin);

    scanf("%d", &n);
    for(int i = 1; i <= n ; ++i){
        ++nr;
        scanf("%d%d%d", &a[nr].c, &a[nr].f, &a[nr].v);
        a[nr].t = 0;
    }

    scanf("%d", &n);
    for(int i = 1; i <= n ; ++i){
        ++nr;
        scanf("%d%d%d", &a[nr].c, &a[nr].f, &a[nr].v);
        a[nr].t = 1;
    }

    sort(a + 1, a + nr + 1);

    int l = 0;
    memset(d[1], -0x3f, sizeof(d[1]));
    d[1][0] = 0;
    for(int i = 1; i <= nr ; ++i, l = 1 - l){
        memset(d[l], -0x3f, sizeof(d[l]));

        for(int j = 0; j <= 20000 ; ++j) d[l][j] = max(d[l][j], d[1 - l][j]);

        if(a[i].t == 0){
            for(int j = 1; j < a[i].c ; ++j)
                d[l][0] = max(d[l][0], d[1 - l][j] - a[i].v);

            for(int j = 0; j + a[i].c <= 20000 ; ++j)
                d[l][j] = max(d[l][j], d[1 - l][j + a[i].c] - a[i].v);
        }
        else{
            for(int j = a[i].c; j <= 20000 ; ++j)
                d[l][j] = max(d[l][j], d[1 - l][j - a[i].c] + a[i].v);
        }
    }

    l = 1 - l;
    printf("%lld", d[l][0]);

    return 0;
}




















Compilation message

clo.cpp: In function 'int main()':
clo.cpp:19:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
     freopen("1.in", "r", stdin);
     ~~~~~~~^~~~~~~~~~~~~~~~~~~~
clo.cpp:21:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &n);
     ~~~~~^~~~~~~~~~
clo.cpp:24:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d%d", &a[nr].c, &a[nr].f, &a[nr].v);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
clo.cpp:28:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &n);
     ~~~~~^~~~~~~~~~
clo.cpp:31:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d%d", &a[nr].c, &a[nr].f, &a[nr].v);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 508 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 504 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 504 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 504 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 504 KB Output is correct
2 Correct 2 ms 504 KB Output is correct
3 Incorrect 2 ms 504 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 508 KB Output isn't correct
2 Halted 0 ms 0 KB -