제출 #223080

#제출 시각아이디문제언어결과실행 시간메모리
223080MKopchevCloud Computing (CEOI18_clo)C++14
100 / 100
851 ms2168 KiB
#include<bits/stdc++.h>
using namespace std;
const int MX=50*2000+42,nmax=2e3+42;
const long long inf=1e18;

struct comp
{
    int cores,rate,gain;
};
comp inp[nmax*2];

int n,m;

long long dp[2][MX];

void my_clean(int id)
{
    for(int i=0;i<MX;i++)
        dp[id][i]=-inf;
}

void add(int which)
{
    //ignore
    for(int i=0;i<MX;i++)
        dp[which&1][i]=dp[!(which&1)][i];

    //take
    for(int i=0;i<MX;i++)
    {
        int would=i+inp[which].cores;
        if(0<=would&&would<MX)dp[which&1][would]=max(dp[which&1][would],dp[!(which&1)][i]+inp[which].gain);
    }
}

bool cmp(comp a,comp b)
{
    if(a.rate!=b.rate)return a.rate>b.rate;
    return a.cores>b.cores;
}
int main()
{
    scanf("%i",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%i%i%i",&inp[i].cores,&inp[i].rate,&inp[i].gain);
        inp[i].gain=-inp[i].gain;
    }

    my_clean(0);
    my_clean(1);

    dp[0][0]=0;

    scanf("%i",&m);

    for(int i=n+1;i<=n+m;i++)
    {
        scanf("%i%i%i",&inp[i].cores,&inp[i].rate,&inp[i].gain);
        inp[i].cores=-inp[i].cores;
    }

    n=n+m;

    sort(inp+1,inp+n+1,cmp);

    for(int i=1;i<=n;i++)
        add(i);

    long long output=0;

    for(int i=0;i<MX;i++)
        output=max(output,dp[n%2][i]);

    printf("%lld\n",output);
    return 0;
}

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

clo.cpp: In function 'int main()':
clo.cpp:43:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%i",&n);
     ~~~~~^~~~~~~~~
clo.cpp:46:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%i%i%i",&inp[i].cores,&inp[i].rate,&inp[i].gain);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
clo.cpp:55:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%i",&m);
     ~~~~~^~~~~~~~~
clo.cpp:59:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%i%i%i",&inp[i].cores,&inp[i].rate,&inp[i].gain);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...