| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 929183 | Stavab | Colouring a rectangle (eJOI19_colouring) | C++14 | 34 ms | 3272 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
using namespace std;
#define INF 9999999999999999
int A[100005][2];
int B[100005][2];
long long prSum[100005][2];
int main()
{
    int N, M;
    scanf("%d %d", &N, &M);
    int input;
    for(int i = 0; i < 2; i++)
    {
        for(int j = 1; j <= N + M - 1; j++)
        {
            scanf("%d", &input);
            if(i == 0)
            {
                if(j % 2 == 1)
                    A[(j + 1) / 2][0] = input;
                else
                    A[j / 2][1] = input;
            }
            else
            {
                if(j % 2 == 1)
                    B[(j + 1) / 2][0] = input;
                else
                    B[j / 2][1] = input;
            }
        }
    }
    for(int i = 0; i < 2; i++)
        for(int j = 1; j <= N; j++)
            prSum[j][i] = prSum[j - 1][i] + B[j][i];
    long long answer = 0;
  	if(N == 1)
    {
      printf("0\n");
      return 0;
    }
  
    if(N % 2 == 1)
    {
        long long tmpAnswer = INF;
        long long sum = 0;
        int size = (N + 1) / 2;
        for(int j = 0; j < size; j++)
        {
            tmpAnswer = min(tmpAnswer, sum + prSum[N - j][0] - prSum[j][0]);
            if(j == 0)
                sum += A[size][0];
            else
            {
                sum += A[size + j][0];
                sum += A[size - j][0];
            }
        }
        tmpAnswer = min(tmpAnswer, sum);
        answer += tmpAnswer;
        tmpAnswer = INF;
        sum = 0;
        size = (N - 1) / 2;
        for(int j = 0; j < size; j++)
        {
            tmpAnswer = min(tmpAnswer, sum + prSum[N - 1 - j][1] - prSum[j][1]);
            sum += A[size - j][1];
            sum += A[size + 1 + j][1];
        }
        tmpAnswer = min(tmpAnswer, sum);
        answer += tmpAnswer;
    }
    else
    {
        long long tmpAnswer = INF;
        long long sum = 0;
        int size = N / 2;
        for(int j = 0; j < size; j++)
        {
            tmpAnswer = min(tmpAnswer, sum + prSum[N - j][0] - prSum[j][0]);
            if(j == 0)
                sum += A[size][1];
            else
            {
                sum += A[size + j][1];
                sum += A[size - j][1];
            }
        }
        tmpAnswer = min(tmpAnswer, sum);
        answer += tmpAnswer;
        tmpAnswer = INF;
        sum = 0;
        size = N / 2;
        for(int j = 0; j < size; j++)
        {
            tmpAnswer = min(tmpAnswer, sum + prSum[N - 1 - j][1] - prSum[j][1]);
            sum += A[size - j][0];
            sum += A[size + 1 + j][0];
        }
        tmpAnswer = min(tmpAnswer, sum);
        answer += tmpAnswer;
    }
    printf("%lld\n", answer);
    return 0;
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
