Submission #3816109


Source Code Expand

using System;
using System.Collections.Generic;
using System.Linq;
class Program{
	static void Main(){
		int n=int.Parse(Console.ReadLine());
		string s=Console.ReadLine();
		int sl=s.Length;
		long[,,,] dp=new long[sl,sl+1,n+1,2];
		for(int i=1;i<=sl;i+=2){
			for(int j=0;j+i<=sl;j++){
				for(int k=0;k<=n;k++){
					dp[j,j+i,k,0]=int.MaxValue;
					dp[j,j+i,k,1]=int.MinValue;
					if(k>0){
						if(i>2){
							for(int l=j+1;l<j+i-1;l+=2){
								if(s[j+i-1]>47){
									for(int m=0;m<=k-1;m++){
										dp[j,j+i,k,0]=Math.Min(dp[j,j+i,k,0],dp[j,l,m,0]+dp[l,j+i-1,k-m-1,0]);
										dp[j,j+i,k,0]=Math.Min(dp[j,j+i,k,0],dp[j,l,m,0]-dp[l,j+i-1,k-m-1,1]);
										dp[j,j+i,k,1]=Math.Max(dp[j,j+i,k,1],dp[j,l,m,1]+dp[l,j+i-1,k-m-1,1]);
										dp[j,j+i,k,1]=Math.Max(dp[j,j+i,k,1],dp[j,l,m,1]-dp[l,j+i-1,k-m-1,0]);
									}
								}
								else if(s[j+i-1]==43){//+
									for(int m=0;m<=k-1;m++){
										dp[j,j+i,k,0]=Math.Min(dp[j,j+i,k,0],dp[j,l,m,0]+dp[l,j+i-1,k-m,0]);
										dp[j,j+i,k,0]=Math.Min(dp[j,j+i,k,0],dp[j,l,m,0]-dp[l,j+i-1,k-m-1,1]);
										dp[j,j+i,k,1]=Math.Max(dp[j,j+i,k,1],dp[j,l,m,1]+dp[l,j+i-1,k-m,1]);
										dp[j,j+i,k,1]=Math.Max(dp[j,j+i,k,1],dp[j,l,m,1]-dp[l,j+i-1,k-m-1,0]);
									}
									dp[j,j+i,k,0]=Math.Min(dp[j,j+i,k,0],dp[j,l,k,0]+dp[l,j+i-1,0,0]);
									dp[j,j+i,k,1]=Math.Max(dp[j,j+i,k,1],dp[j,l,k,1]+dp[l,j+i-1,0,1]);
								}
								else{
									for(int m=0;m<=k-1;m++){
										dp[j,j+i,k,0]=Math.Min(dp[j,j+i,k,0],dp[j,l,m,0]+dp[l,j+i-1,k-m-1,0]);
										dp[j,j+i,k,0]=Math.Min(dp[j,j+i,k,0],dp[j,l,m,0]-dp[l,j+i-1,k-m,1]);
										dp[j,j+i,k,1]=Math.Max(dp[j,j+i,k,1],dp[j,l,m,1]+dp[l,j+i-1,k-m-1,1]);
										dp[j,j+i,k,1]=Math.Max(dp[j,j+i,k,1],dp[j,l,m,1]-dp[l,j+i-1,k-m,0]);
									}
									dp[j,j+i,k,0]=Math.Min(dp[j,j+i,k,0],dp[j,l,k,0]-dp[l,j+i-1,0,1]);
									dp[j,j+i,k,1]=Math.Max(dp[j,j+i,k,1],dp[j,l,k,1]-dp[l,j+i-1,0,0]);
								}
							}
						}
						else{
							dp[j,j+i,k,0]=0;
							dp[j,j+i,k,1]=9;
						}
					}
					else{
						if(i>2){
							if(s[j+i-1]<47){
								for(int l=j+1;l<j+i-1;l+=2){
									if(dp[j,l,k,0]!=int.MaxValue&&dp[l,j+i-1,k,0]!=int.MaxValue){
										if(s[j+i-1]==43){
											dp[j,j+i,k,0]=dp[j,l,k,0]+dp[l,j+i-1,k,0];
											dp[j,j+i,k,1]=dp[j,l,k,1]+dp[l,j+i-1,k,1];
										}
										else{
											dp[j,j+i,k,0]=dp[j,l,k,0]-dp[l,j+i-1,k,1];
											dp[j,j+i,k,1]=dp[j,l,k,1]-dp[l,j+i-1,k,0];
										}
									}
								}
							}
						}
						else{
							if(s[j]>47){
								dp[j,j+i,k,0]=s[j]-'0';
								dp[j,j+i,k,1]=s[j]-'0';
							}
						}
					}
				}
			}
		}
		Console.WriteLine(dp[0,sl,n,1]==int.MinValue?"NG":dp[0,sl,n,1].ToString());
	}
}

Submission Info

Submission Time
Task A - 計算ドリル
User fgwiebfaoish
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2822 Byte
Status CE

Compile Error

./Main.cpp:1:7: error: expected nested-name-specifier before ‘System’
 using System;
       ^
./Main.cpp:2:7: error: expected nested-name-specifier before ‘System’
 using System.Collections.Generic;
       ^
./Main.cpp:3:7: error: expected nested-name-specifier before ‘System’
 using System.Linq;
       ^
./Main.cpp:82:1: error: expected ‘;’ after class definition
 }
 ^
./Main.cpp: In static member function ‘static void Program::Main()’:
./Main.cpp:6:9: error: expected primary-expression before ‘int’
   int n=int.Parse(Console.ReadLine());
         ^
./Main.cpp:7:3: error: ‘string’ was not declared in this scope
   string s=Console.ReadLine();
   ^
./Main.cpp:8:10: error: ‘s’ was not declared in this scope
   int sl=s.Length;
          ^
./Main.cpp:9:7: error: expected unqualified-id before ‘[’ token
   long[,,,] dp=new long[sl,sl+1,n+1,2];
       ^
./Main.cpp:13:6: error: ‘dp’ was not declared in this scope
      dp[j,j+i,k,0]=int.MaxValue;
      ^
./Main.cpp:13:20: error: expected primary-expression...