Submission #7146532


Source Code Expand

#include<bits/stdc++.h>
using namespace std;

int main(){
    int w, h;
    cin >> w >> h;
    int n;
    cin >> n;
    vector<pair<int, int>> gold(n);
    vector<int> dx;
    vector<int> dy;
    map<int, bool> used_x;
    map<int, bool> used_y;
    dx.push_back(0);
    used_x[0] = true;
    dx.push_back(w - 1);
    used_x[w - 1] = true;
    dy.push_back(0);
    used_y[0] = true;
    dy.push_back(h - 1);
    used_y[h - 1] = true;
    for (int i = 0; i < n; i++){
        int x, y;
        cin >> x >> y;
        x--; y--;
        gold[i] = {x, y};
        if (x != 0 && !used_x[x - 1]) {
            dx.push_back(x - 1);
            used_x[x - 1] = true;
        }
        if (x != w - 1 && !used_x[x + 1]) {
            dx.push_back(x + 1);
            used_x[x + 1] = true;
        }
        if (y != 0 && !used_y[y - 1]) {
            dy.push_back(y - 1);
            used_y[y - 1] = true;
        }
        if (y != h - 1 && !used_y[y + 1]) {
            dy.push_back(y + 1);
            used_y[y + 1] = true;
        }
    }
    sort(dx.begin(), dx.end());
    sort(dy.begin(), dy.end());
    map<int, int> xpos;
    map<int, int> ypos;
    int p = dx.size();
    int q = dy.size();
    for (int i = 0; i < p; i++) xpos[dx[i]] = i;
    xpos[- 1] = - 1; xpos[w] = p;
    for (int i = 0; i < q; i++) ypos[dy[i]] = i;
    ypos[- 1] = - 1; ypos[h] = q;
    vector<vector<vector<vector<long long>>>> dp(p, vector<vector<vector<long long>>>(q, vector<vector<long long>>(p, vector<long long>(q, 0))));
    vector<tuple<long long, int, int>> pq;
    for (int i = 0; i < p; i++){
        for (int j = 0; j < q; j++){
            for (int s = i; s < p; s++){
                for (int t = j; t < q; t++){
                    long long fac = (long long)(dx[s] - dx[i] + 1) * (dy[t] - dy[j] + 1);
                    int a = i * 100 + j;
                    int b = s * 100 + t;
                    pq.push_back(tie(fac, a, b));
                }
            }
        }
    }
    sort(pq.begin(), pq.end());
    for (int i = 0; i < pq.size(); i++) {
        long long fac;
        int a, b;
        tie(fac, a, b) = pq[i];
        int ux, uy, sx, sy;
        ux = a / 100;
        uy = a % 100;
        sx = b / 100;
        sy = b % 100;
        bool flag = true;
        for (int i = 0; i < n; i++){
            if (gold[i].first < dx[ux] || gold[i].first > dx[sx] || gold[i].second < dy[uy] || gold[i].second > dy[sy]) continue;
            long long d1, d2, d3, d4;
            d1 = 0; d2 = 0; d3 = 0; d4 = 0;
            int gold_prex = xpos[gold[i].first - 1];
            int gold_prox = xpos[gold[i].first + 1];
            int gold_prey = ypos[gold[i].second - 1];
            int gold_proy = ypos[gold[i].second + 1];
            if (ux <= gold_prex && uy <= gold_prey) d1 = dp[ux][uy][gold_prex][gold_prey];
            if (gold_prox <= sx && uy <= gold_prey) d2 = dp[gold_prox][uy][sx][gold_prey];
            if (ux <= gold_prex && gold_proy <= sy) d3 = dp[ux][gold_proy][gold_prex][sy];
            if (gold_prox <= sx && gold_proy <= sy) d4 = dp[gold_prox][gold_proy][sx][sy];
            dp[ux][uy][sx][sy] = max(dp[ux][uy][sx][sy], dx[sx] - dx[ux] + dy[sy] - dy[uy] + 1 + d1 + d2 + d3 + d4);
        }
    }
    cout << dp[0][0][p - 1][q - 1] << endl;
}

Submission Info

Submission Time
Task D - 金塊ゲーム
User lemon_
Language C++14 (GCC 5.4.1)
Score 100
Code Size 3361 Byte
Status AC
Exec Time 2402 ms
Memory 194540 KB

Judge Result

Set Name Sample Subtask1 Subtask2 Subtask3
Score / Max Score 0 / 0 80 / 80 19 / 19 1 / 1
Status
AC × 3
AC × 25
AC × 50
AC × 75
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
Subtask1 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt
Subtask2 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt
Subtask3 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt, subtask3_01.txt, subtask3_02.txt, subtask3_03.txt, subtask3_04.txt, subtask3_05.txt, subtask3_06.txt, subtask3_07.txt, subtask3_08.txt, subtask3_09.txt, subtask3_10.txt, subtask3_11.txt, subtask3_12.txt, subtask3_13.txt, subtask3_14.txt, subtask3_15.txt, subtask3_16.txt, subtask3_17.txt, subtask3_18.txt, subtask3_19.txt, subtask3_20.txt, subtask3_21.txt, subtask3_22.txt, subtask3_23.txt, subtask3_24.txt, subtask3_25.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 2 ms 512 KB
subtask1_01.txt AC 1 ms 256 KB
subtask1_02.txt AC 1 ms 256 KB
subtask1_03.txt AC 2 ms 384 KB
subtask1_04.txt AC 4 ms 1152 KB
subtask1_05.txt AC 1 ms 256 KB
subtask1_06.txt AC 1 ms 256 KB
subtask1_07.txt AC 2 ms 512 KB
subtask1_08.txt AC 1 ms 256 KB
subtask1_09.txt AC 2 ms 640 KB
subtask1_10.txt AC 1 ms 256 KB
subtask1_11.txt AC 2 ms 512 KB
subtask1_12.txt AC 2 ms 384 KB
subtask1_13.txt AC 2 ms 512 KB
subtask1_14.txt AC 3 ms 896 KB
subtask1_15.txt AC 5 ms 1660 KB
subtask1_16.txt AC 4 ms 1312 KB
subtask1_17.txt AC 4 ms 1184 KB
subtask1_18.txt AC 2 ms 640 KB
subtask1_19.txt AC 2 ms 384 KB
subtask1_20.txt AC 2 ms 384 KB
subtask1_21.txt AC 4 ms 1184 KB
subtask1_22.txt AC 4 ms 1280 KB
subtask1_23.txt AC 2 ms 512 KB
subtask1_24.txt AC 6 ms 1788 KB
subtask1_25.txt AC 5 ms 1660 KB
subtask2_01.txt AC 14 ms 3260 KB
subtask2_02.txt AC 16 ms 3320 KB
subtask2_03.txt AC 94 ms 19312 KB
subtask2_04.txt AC 137 ms 24176 KB
subtask2_05.txt AC 226 ms 37616 KB
subtask2_06.txt AC 206 ms 28016 KB
subtask2_07.txt AC 137 ms 21616 KB
subtask2_08.txt AC 92 ms 13556 KB
subtask2_09.txt AC 520 ms 70892 KB
subtask2_10.txt AC 700 ms 84844 KB
subtask2_11.txt AC 264 ms 38256 KB
subtask2_12.txt AC 838 ms 91760 KB
subtask2_13.txt AC 404 ms 50800 KB
subtask2_14.txt AC 442 ms 68716 KB
subtask2_15.txt AC 12 ms 3260 KB
subtask2_16.txt AC 154 ms 22512 KB
subtask2_17.txt AC 247 ms 35948 KB
subtask2_18.txt AC 637 ms 81388 KB
subtask2_19.txt AC 421 ms 49264 KB
subtask2_20.txt AC 478 ms 70508 KB
subtask2_21.txt AC 575 ms 73708 KB
subtask2_22.txt AC 648 ms 80876 KB
subtask2_23.txt AC 719 ms 83948 KB
subtask2_24.txt AC 724 ms 84592 KB
subtask2_25.txt AC 899 ms 95472 KB
subtask3_01.txt AC 3 ms 1056 KB
subtask3_02.txt AC 73 ms 19696 KB
subtask3_03.txt AC 16 ms 3576 KB
subtask3_04.txt AC 154 ms 24944 KB
subtask3_05.txt AC 370 ms 49776 KB
subtask3_06.txt AC 240 ms 45168 KB
subtask3_07.txt AC 134 ms 24560 KB
subtask3_08.txt AC 308 ms 45936 KB
subtask3_09.txt AC 690 ms 98928 KB
subtask3_10.txt AC 674 ms 85488 KB
subtask3_11.txt AC 1642 ms 193516 KB
subtask3_12.txt AC 2402 ms 190444 KB
subtask3_13.txt AC 1666 ms 194540 KB
subtask3_14.txt AC 756 ms 94828 KB
subtask3_15.txt AC 1180 ms 153836 KB
subtask3_16.txt AC 697 ms 86252 KB
subtask3_17.txt AC 1689 ms 193516 KB
subtask3_18.txt AC 338 ms 50288 KB
subtask3_19.txt AC 1609 ms 193388 KB
subtask3_20.txt AC 296 ms 45296 KB
subtask3_21.txt AC 1980 ms 194540 KB
subtask3_22.txt AC 1737 ms 193516 KB
subtask3_23.txt AC 1669 ms 194156 KB
subtask3_24.txt AC 1671 ms 192876 KB
subtask3_25.txt AC 1564 ms 193900 KB