Submission #1026827


Source Code Expand

using System;
using System.Text;
using System.Collections.Generic;
class Solve{
    public Solve(){}
    StringBuilder sb;
    public static int Main(){
        new Solve().Run();
        return 0;
    }
    void Run(){
        sb = new StringBuilder();
        Calc();
        Console.Write(sb.ToString());
    }
    void Calc(){
        string[] str = Console.ReadLine().Split(' ');
        int H = int.Parse(str[0]);
        int W = int.Parse(str[1]);
        long[,] D1 = new long[H,W];
        long[,] D2 = new long[W,H];
        for(int i=0;i<H;i++){
            str = Console.ReadLine().Split(' ');
            for(int j=0;j<W;j++){
                D1[i,j] = long.Parse(str[j]);
                D2[j,i] = long.Parse(str[j]);
            }
        }
        sb.Append(Math.Max(Calc(D1,H,W),Calc(D2,W,H))+"\n");
    }
    long Calc(long[,] m,int H,int W){
        long[,] sums = new long[H,W];
        for(int i=0;i<H;i++){
            sums[i,0] = m[i,0];
            for(int j=1;j<W;j++){
                sums[i,j] = sums[i,j-1] + m[i,j];
            }
        }
        long[] m1 = new long[H];
        for(int i=0;i<H;i++){
            m1[i] = -9000000000000;
        }
        for(int l=0;l<W;l++){
            for(int r=l;r<W;r++){
                long c1 = Math.Max(0,sums[0,r]-(l == 0 ? 0 : sums[0,l-1]));
                long c2 = Math.Max(0,sums[0,r]-(l == 0 ? 0 : sums[0,l-1]));
                long c3 = sums[0,r]-(l == 0 ? 0 : sums[0,l-1]);
                m1[0] = Math.Max(m1[0],c3);
                for(int i=1;i<H;i++){
                    c2 = Math.Max(sums[i,r]-(l == 0 ? 0 : sums[i,l-1]),c2 + sums[i,r]-(l == 0 ? 0 : sums[i,l-1]));
                    c1 = Math.Max(c1,c2);
                    c3 = Math.Max(c3,sums[i,r]-(l == 0 ? 0 : sums[i,l-1]));
                    if(c3 >= 0){
                        m1[i] = Math.Max(c1,m1[i]);
                    }
                    else{
                        m1[i] = Math.Max(c3,m1[i]);
                    }
                }
            }
        }
        long[] m2 = new long[H];
        for(int i=0;i<H;i++){
            m2[i] = -9000000000000;
        }
        for(int l=0;l<W;l++){
            for(int r=l;r<W;r++){
                long c1 = Math.Max(0,sums[H-1,r]-(l == 0 ? 0 : sums[H-1,l-1]));
                long c2 = Math.Max(0,sums[H-1,r]-(l == 0 ? 0 : sums[H-1,l-1]));
                long c3 = sums[H-1,r]-(l == 0 ? 0 : sums[H-1,l-1]);
                m2[H-1] = Math.Max(m2[H-1],c3);
                for(int i=H-2;i>=0;i--){
                    c2 = Math.Max(sums[i,r]-(l == 0 ? 0 : sums[i,l-1]),c2 + sums[i,r]-(l == 0 ? 0 : sums[i,l-1]));
                    c1 = Math.Max(c1,c2);
                    c3 = Math.Max(c3,sums[i,r]-(l == 0 ? 0 : sums[i,l-1]));
                    if(c3 >= 0){
                        m2[i] = Math.Max(c1,m2[i]);
                    }
                    else{
                        m2[i] = Math.Max(c3,m2[i]);
                    }
                }
            }
        }
        long max = -9000000000000;
        for(int i=0;i<H-1;i++){
            max = Math.Max((m1[i]+m2[i+1]),max);
        }
        return max;
    }
}

Submission Info

Submission Time
Task D - 庭園
User leign
Language C# (Mono 3.2.1.0)
Score 100
Code Size 3237 Byte
Status AC
Exec Time 1104 ms
Memory 15440 KB

Judge Result

Set Name Sample Subtask1 All
Score / Max Score 0 / 0 50 / 50 50 / 50
Status
AC × 4
AC × 15
AC × 30
Set Name Test Cases
Sample sample0.txt, sample1.txt, sample2.txt, sample3.txt
Subtask1 subtask0_0.txt, subtask0_1.txt, subtask0_10.txt, subtask0_11.txt, subtask0_12.txt, subtask0_13.txt, subtask0_14.txt, subtask0_2.txt, subtask0_3.txt, subtask0_4.txt, subtask0_5.txt, subtask0_6.txt, subtask0_7.txt, subtask0_8.txt, subtask0_9.txt
All subtask0_0.txt, subtask0_1.txt, subtask0_10.txt, subtask0_11.txt, subtask0_12.txt, subtask0_13.txt, subtask0_14.txt, subtask0_2.txt, subtask0_3.txt, subtask0_4.txt, subtask0_5.txt, subtask0_6.txt, subtask0_7.txt, subtask0_8.txt, subtask0_9.txt, subtask1_0.txt, subtask1_1.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_2.txt, subtask1_3.txt, subtask1_4.txt, subtask1_5.txt, subtask1_6.txt, subtask1_7.txt, subtask1_8.txt, subtask1_9.txt
Case Name Status Exec Time Memory
sample0.txt AC 98 ms 8720 KB
sample1.txt AC 96 ms 8792 KB
sample2.txt AC 98 ms 8716 KB
sample3.txt AC 96 ms 8716 KB
subtask0_0.txt AC 106 ms 8972 KB
subtask0_1.txt AC 107 ms 8960 KB
subtask0_10.txt AC 106 ms 8952 KB
subtask0_11.txt AC 102 ms 8988 KB
subtask0_12.txt AC 106 ms 9088 KB
subtask0_13.txt AC 104 ms 8864 KB
subtask0_14.txt AC 104 ms 8904 KB
subtask0_2.txt AC 103 ms 8972 KB
subtask0_3.txt AC 103 ms 8852 KB
subtask0_4.txt AC 102 ms 8840 KB
subtask0_5.txt AC 104 ms 9068 KB
subtask0_6.txt AC 105 ms 9016 KB
subtask0_7.txt AC 105 ms 9068 KB
subtask0_8.txt AC 103 ms 8900 KB
subtask0_9.txt AC 104 ms 8852 KB
subtask1_0.txt AC 863 ms 14888 KB
subtask1_1.txt AC 988 ms 15232 KB
subtask1_10.txt AC 811 ms 14932 KB
subtask1_11.txt AC 1063 ms 15300 KB
subtask1_12.txt AC 917 ms 15044 KB
subtask1_13.txt AC 1104 ms 15420 KB
subtask1_14.txt AC 890 ms 14924 KB
subtask1_2.txt AC 1053 ms 15200 KB
subtask1_3.txt AC 868 ms 15096 KB
subtask1_4.txt AC 935 ms 14944 KB
subtask1_5.txt AC 1068 ms 15284 KB
subtask1_6.txt AC 966 ms 15188 KB
subtask1_7.txt AC 923 ms 15168 KB
subtask1_8.txt AC 1103 ms 15440 KB
subtask1_9.txt AC 936 ms 15060 KB