Submission #809108

#TimeUsernameProblemLanguageResultExecution timeMemory
809108urd05Fun Palace (CCO18_fun)C++17
3 / 25
43 ms78504 KiB
#include <bits/stdc++.h>
using namespace std;

int n;
int e;
int a[1000];
int b[1000];
int dp[1000][20001]; //정확히.
const int MAX=20000;

int main() {
    scanf("%d\n%d\n",&n,&e);
    for(int i=0;i<n-1;i++) {
        scanf("%d %d",&a[i],&b[i]);
    }
    for(int i=0;i<=MAX;i++) {
        dp[n-1][i]=i;
    }
    for(int i=n-2;i>=0;i--) {
        int mx=0;
        for(int j=0;j<=b[i];j++) {
            mx=max(mx,dp[i+1][j]);
        }
        for(int j=0;j<=MAX;j++) {
            if (j<a[i]) {
                mx=max(mx,dp[i+1][b[i]+j]-j);
                dp[i][j]=mx+j;
            }
            else if (j<a[i]+b[i]) {
                dp[i][j]=dp[i+1][j-a[i]]+a[i];
                                if (j>a[i])
                dp[i][j]=max(dp[i][j],dp[i][j-1]);
            }
            else {
                dp[i][j]=dp[i+1][j];
            }
        }
    }
    int ret=0;
    for(int i=0;i<e;i++) {
        ret=max(ret,dp[0][i]);
    }
    printf("%d",ret);
    return 0;
}

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:12:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |     scanf("%d\n%d\n",&n,&e);
      |     ~~~~~^~~~~~~~~~~~~~~~~~
Main.cpp:14:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   14 |         scanf("%d %d",&a[i],&b[i]);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...