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...