Submission #3369596


Source Code Expand

using System;
using System.Linq;//リストの使用
using System.Collections.Generic;
class Program
{
	static void Main()
	{
		string[] input = Console.ReadLine().Split(' ');//Splitで区切り文字を指定して複数個受け取る。
		long a = long.Parse(input[0]);
		long b = long.Parse(input[1]);
		long[] numsL = Array.ConvertAll(Console.ReadLine().Split(' '),long.Parse);
    long[] numsR = Array.ConvertAll(Console.ReadLine().Split(' '),long.Parse);
		long[][] dp = new long[a+1][];//左からll個、右からrr個取った時の、先手の最高得点。[a,b]=0
    for(long i = 0; i <= a; i++)
    {
      dp[i] = new long[b+1];
    }
    
    for(long ll = a; ll>= 0; ll--)
    {
      for(long rr = b; rr >= 0; rr--)
      {
        if(ll == a && rr == b) continue;
        if((ll + rr) % 2 == 0)//先手の番
        {
          if(ll == a) dp[ll][rr] = dp[ll][rr+1];
          else if(rr == b) dp[ll][rr] = dp[ll+1][rr];
          else dp[ll][rr] = Math.Max(dp[ll+1][rr] + numsL[ll], dp[ll][rr+1]+numsR[rr]);
          //Console.WriteLine(ll+" "+rr+" "+dp[ll][rr]);
        }else//後手の番
        {
          if(ll == a) dp[ll][rr] = dp[ll][rr+1];
          else if(rr == b) dp[ll][rr] = dp[ll+1][rr];
          else dp[ll][rr] = Math.Min(dp[ll+1][rr], dp[ll][rr+1]);
          //Console.WriteLine(ll+" "+rr+" "+dp[ll][rr]);
        }    
      }
    }

		Console.WriteLine(dp[0][0]);
	}
}

Submission Info

Submission Time
Task B - ゲーム
User suikameron
Language C# (Mono 4.6.2.0)
Score 0
Code Size 1456 Byte
Status WA
Exec Time 31 ms
Memory 17960 KB

Judge Result

Set Name All
Score / Max Score 0 / 3
Status
WA × 5
Set Name Test Cases
All 00, 01, 02, 90, 91
Case Name Status Exec Time Memory
00 WA 21 ms 11220 KB
01 WA 29 ms 17960 KB
02 WA 31 ms 17120 KB
90 WA 21 ms 9172 KB
91 WA 22 ms 13268 KB