Submission #1307120


Source Code Expand

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<climits>
#include<iostream>
#include<algorithm>
#include<stack>
#include<queue>
#include<vector>
#include<list>
#include<map>
#include<set>
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
#define pb push_back
int dy[]={0, 0, 1, -1, 0};
int dx[]={1, -1, 0, 0, 0};
 
#define FOR(i,a,b) for (int i=(a);i<(b);i++)
#define RFOR(i,a,b) for (int i=(b)-1;i>=(a);i--)
#define REP(i,n) for (int i=0;i<(n);i++)
#define RREP(i,n) for (int i=(n)-1;i>=0;i--)

int a[1001];
int b[1001];
ll dp[1001][1001][2][2];

int main(){
    int A,B;

    scanf("%d%d",&A,&B);

    for(int i = 1;i <= A;i++)
        scanf("%d",&a[i]);
    for(int i = 1;i <= B;i++)
        scanf("%d",&b[i]);

    dp[A][B][0][0] = dp[A][B][0][1] = dp[A][B][1][0] = dp[A][B][1][1] = 0;

    for(int i = A;i >= 0;i--){
        for(int j = B;j >= 0;j--){
            if(i == A && j == B)
                continue;

            ll c,d;
            if(i < A)
                c = dp[i + 1][j][1][0] + a[i + 1];
            else
                c = 0;
            if(j < B)
                d = dp[i][j + 1][1][0] + b[j + 1];
            else
                d = 0;
            if(c > d /*|| (c == d && dp[i + 1][j][1][1] < dp[i][j + 1][1][1])*/){
                dp[i][j][0][0] = c;
                dp[i][j][0][1] = dp[i + 1][j][1][1];
            }else{
                dp[i][j][0][0] = d;
                dp[i][j][0][1] = dp[i][j + 1][1][1];
            }

            if(i < A)
                c = dp[i + 1][j][0][1] + a[i + 1];
            else
                c = 0;
            if(j < B)
                d = dp[i][j + 1][0][1] + b[j + 1];
            else
                d = 0;
            if(c > d /*|| (c == d && dp[i + 1][j][0][0] < dp[i][j + 1][0][0])*/){
                dp[i][j][1][1] = c;
                dp[i][j][1][0] = dp[i + 1][j][0][0];
            }else{
                dp[i][j][1][1] = d;
                dp[i][j][1][0] = dp[i][j + 1][0][0];
            }

        }
    }
    /*for(int i = 0;i <= A;i++){
        for(int j = 0;j <= B;j++){
            printf("%lld %lld  %lld %lld     ",dp[i][j][0][0],dp[i][j][0][1],dp[i][j][1][0],dp[i][j][1][1]);
        }
        printf("\n");
    }*/
    printf("%lld\n",dp[0][0][0][0]);
    return 0;
}

Submission Info

Submission Time
Task B - ゲーム
User kyawakyawa
Language C++14 (GCC 5.4.1)
Score 3
Code Size 2391 Byte
Status AC
Exec Time 16 ms
Memory 31616 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:32:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&A,&B);
                        ^
./Main.cpp:35:26: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&a[i]);
                          ^
./Main.cpp:37:26: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&b[i]);
                          ^

Judge Result

Set Name All
Score / Max Score 3 / 3
Status
AC × 5
Set Name Test Cases
All 00, 01, 02, 90, 91
Case Name Status Exec Time Memory
00 AC 1 ms 256 KB
01 AC 12 ms 26880 KB
02 AC 16 ms 31616 KB
90 AC 1 ms 256 KB
91 AC 1 ms 256 KB