답안 #876265

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
876265 2023-11-21T13:23:46 Z danikoynov Super Dango Maker (JOI22_dango3) C++17
22 / 100
139 ms 860 KB
#include "dango3.h"

#include <bits/stdc++.h>

using namespace std;


int get_query(vector < int > lf, vector < int > rf)
{
    for (int cur : rf)
        lf.push_back(cur);
    return Query(lf);
}

mt19937 rng;
int n, m;
void sub_solve(vector < int > &d)
{
    if (Query(d) == 0)
        return;

    vector < int > df;
    int tr = 0;
    while(true)
    {
        tr ++;
        vector < int > lf, rf;
        for (int i = 0; i < d.size(); i ++)
        {
            if (rng() % 2 == 0)
                lf.push_back(d[i]);
            else
                rf.push_back(d[i]);
        }
        sub_solve(lf);
        sub_solve(rf);
        if (tr < 10 && lf.size() + rf.size() > 2 * n && get_query(lf, rf) > 1)
        {
            d = lf;
            for (int cur : rf)
                d.push_back(cur);
            continue;
        }
        for (int cur : lf)
            df.push_back(cur);
        for (int cur : rf)
            df.push_back(cur);
        break;
    }

    int cnt = Query(df);
    for (int t = 0; t < cnt; t++)
    {
        vector < int > secure, trash;
        while(!df.empty() && secure.size() < n)
        {
            int bk = df.back();
            df.pop_back();
            if (get_query(df, secure) == 0)
                secure.push_back(bk);
            else
                trash.push_back(bk);
        }

        Answer(secure);
        for (int cur : trash)
            df.push_back(cur);
    }

    d = df;

}
void Solve(int N, int M)
{
    n = N;
    m = M;
    vector < int > d;
    for (int i = 1; i <= N * M; i ++)
        d.push_back(i);

    sub_solve(d);
}

Compilation message

dango3.cpp: In function 'void sub_solve(std::vector<int>&)':
dango3.cpp:28:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |         for (int i = 0; i < d.size(); i ++)
      |                         ~~^~~~~~~~~~
dango3.cpp:37:46: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   37 |         if (tr < 10 && lf.size() + rf.size() > 2 * n && get_query(lf, rf) > 1)
      |                        ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
dango3.cpp:55:44: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   55 |         while(!df.empty() && secure.size() < n)
      |                              ~~~~~~~~~~~~~~^~~
# 결과 실행 시간 메모리 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 600 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 348 KB Output is correct
2 Correct 3 ms 504 KB Output is correct
3 Correct 2 ms 348 KB Output is correct
4 Correct 3 ms 348 KB Output is correct
5 Correct 3 ms 556 KB Output is correct
6 Correct 2 ms 804 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 32 ms 604 KB Output is correct
2 Correct 33 ms 600 KB Output is correct
3 Correct 34 ms 860 KB Output is correct
4 Correct 33 ms 604 KB Output is correct
5 Correct 33 ms 600 KB Output is correct
6 Correct 33 ms 604 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 139 ms 764 KB Wrong Answer [3]
2 Halted 0 ms 0 KB -