Submission #5412796


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

#define REP(i,n) for(int i=0;i<n;i++)
typedef long long int lli;
typedef pair<int, int> P;


// dp[i][j]: ai、bj まで使った状態での価値の最大値
lli dp[1001][1001];
int main() {
    int A, B;
    cin >> A >> B;
    lli a[A];
    lli b[B];
    REP(i, A) {
        cin >> a[i];
    }
    REP(i, B) {
        cin >> b[i];
    }

    lli ans = 1;
    for(int i=0;i<=A;i++) {
        for (int j=0; j<=B; j++) {
            // 相手のターン
            if ((i + j) % 2 == 1) {
                // a を使う
                if (i < A)
                    dp[i+1][j] = dp[i][j];
                // b を使う
                if (j < B)
                    dp[i][j+1] = dp[i][j];
            }
            else {
                // a を使う
                if (i < A)
                    dp[i+1][j] = max(dp[i+1][j], dp[i][j] + a[i]);
                // b を使う
                if (j < B)
                    dp[i][j+1] = max(dp[i][j+1], dp[i][j] + b[j]);
                //if (i == 0 && j == 1) {
                //    cout << "dp["<<i<<"]["<<j<<"]: " << dp[i][j]<<endl;
                //    cout << "dp["<<i<<"]["<<j+1<<"]: " << dp[i][j+1]<<endl;
                //    cout << "dp["<<i+1<<"]["<<j<<"]: " << dp[i+1][j]<<endl;
                //}
            }
        }
    }

    //for(int i=0;i<=A;i++) {
    //    for (int j=0; j<=B; j++) {
    //        cout << "dp["<<i<<"]["<<j<<"]: " << dp[i][j]<<endl;
    //    }
    //}


    cout << dp[A][B] << endl;
}

Submission Info

Submission Time
Task B - ゲーム
User longtime
Language C++ (GCC 5.4.1)
Score 0
Code Size 1592 Byte
Status WA
Exec Time 7 ms
Memory 8064 KB

Judge Result

Set Name All
Score / Max Score 0 / 3
Status
AC × 2
WA × 3
Set Name Test Cases
All 00, 01, 02, 90, 91
Case Name Status Exec Time Memory
00 WA 1 ms 256 KB
01 WA 5 ms 6528 KB
02 WA 7 ms 8064 KB
90 AC 1 ms 256 KB
91 AC 1 ms 256 KB