답안 #951820

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
951820 2024-03-22T17:36:27 Z EJIC_B_KEDAX Super Dango Maker (JOI22_dango3) C++17
0 / 100
100 ms 768 KB
#include <bits/stdc++.h>
#include "dango3.h"

using ll = long long;

using namespace std;

mt19937_64 mt(chrono::high_resolution_clock::now().time_since_epoch().count());

void Solve(int n, int m) {
    vector<int> have(n * m);
    for (int i = 0; i < n * m; i++) {
        have[i] = i + 1;
    }
    for (int _ = 0; _ < m; _++) {
        shuffle(have.begin(), have.end(), mt);
        vector<int> nw;
        int l = n - 1, r = have.size();
        while (r - l > 1) {
            int mid = (r + l) / 2;
            nw.clear();
            for (int i = 0; i <= mid; i++) {
                nw.push_back(have[i]);
            }
            if (Query(nw)) {
                r = mid;
            } else {
                l = mid;
            }
        }
        nw.clear();
        for (int i = 0; i <= r; i++) {
            nw.push_back(have[i]);
        }
        for (int i = 0; i < nw.size() && nw.size() > n; i++) {
            int tmp = nw[i];
            swap(nw[i], nw.back());
            nw.pop_back();
            if (!Query(nw)) {
                nw.push_back(tmp);
                swap(nw[i], nw.back());
            } else {
                i--;
            }
        }
        Answer(nw);
        unordered_set<int> st;
        vector<int> have2;
        for (int i : nw) {
            st.insert(i);
        }
        for (int i : have) {
            if (st.find(i) == st.end()) {
                have2.push_back(i);
            }
        }
        swap(have, have2);
    }
}

Compilation message

dango3.cpp: In function 'void Solve(int, int)':
dango3.cpp:35:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |         for (int i = 0; i < nw.size() && nw.size() > n; i++) {
      |                         ~~^~~~~~~~~~~
dango3.cpp:35:52: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   35 |         for (int i = 0; i < nw.size() && nw.size() > n; i++) {
      |                                          ~~~~~~~~~~^~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Wrong Answer [1]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 348 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 23 ms 644 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 100 ms 768 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -