Submission #945021

# Submission time Handle Problem Language Result Execution time Memory
945021 2024-03-13T10:00:57 Z alextodoran Super Dango Maker (JOI22_dango3) C++17
7 / 100
1098 ms 716 KB
/**
 _  _   __  _ _ _  _  _ _
 |a  ||t  ||o    d | |o  |
| __    _| | _ | __|  _ |
| __ |/_  | __  /__\ / _\|

**/

#include <bits/stdc++.h>
#include "dango3.h"

using namespace std;

typedef long long ll;

int Query (const vector <int> &x);
void Answer (const vector <int> &a);

void Solve (int N, int M) {
    int A[N * M + 2];
    fill(A, A + N * M + 2, 0);
    int l, r;
    l = 1; r = N * M;
    while (l < r) {
        int mid = (l + r) / 2;
        vector <int> x;
        for (int i = 1; i <= mid; i++) {
            x.push_back(i);
        }
        if (Query(x) > 0) {
            r = mid;
        } else {
            l = mid + 1;
        }
    }
    vector <int> with_color[N + 2];
    int curr = 0;
    int k = l;
    while (k > 0) {
        curr++;
        int p = k;
        while (p <= N * M) {
            A[p] = curr;
            with_color[curr].push_back(p);
            l = p + 1; r = N * M + 1;
            while (l < r) {
                int mid = (l + r) / 2;
                vector <int> x;
                for (int i = 1; i <= mid; i++) {
                    if (A[i] == 0) {
                        x.push_back(i);
                    }
                }
                for (int c = 1; c < curr; c++) {
                    x.push_back(with_color[c].back());
                }
                if (Query(x) > 0) {
                    r = mid;
                } else {
                    l = mid + 1;
                }
            }
            p = l;
        }
        k--;
        while (k > 0) {
            vector <int> x;
            for (int i = 1; i < k; i++) {
                x.push_back(i);
            }
            for (int c = 1; c <= curr; c++) {
                x.push_back(with_color[c].back());
            }
            if (Query(x) == 0) {
                break;
            }
            k--;
        }
    }
    for (int t = 1; t <= M; t++) {
        vector <int> a;
        for (int c = 1; c <= N; c++) {
            a.push_back(with_color[c].back());
            with_color[c].pop_back();
        }
        Answer(a);
    }
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 23 ms 508 KB Output is correct
2 Correct 24 ms 600 KB Output is correct
3 Correct 28 ms 348 KB Output is correct
4 Correct 31 ms 348 KB Output is correct
5 Correct 20 ms 344 KB Output is correct
6 Correct 21 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 490 ms 604 KB Wrong Answer [3]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1098 ms 716 KB Wrong Answer [3]
2 Halted 0 ms 0 KB -