Submission #3369589


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 1452 Byte
Status WA
Exec Time 2109 ms
Memory 30724 KB

Judge Result

Set Name All
Score / Max Score 0 / 3
Status
WA × 3
TLE × 2
Set Name Test Cases
All 00, 01, 02, 90, 91
Case Name Status Exec Time Memory
00 WA 22 ms 11220 KB
01 TLE 2109 ms 26880 KB
02 TLE 2109 ms 30724 KB
90 WA 22 ms 9172 KB
91 WA 22 ms 11220 KB