제출 #485993

#제출 시각아이디문제언어결과실행 시간메모리
485993blueMinerals (JOI19_minerals)C++17
40 / 100
26 ms3416 KiB
#include "minerals.h"
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

using vi = vector<int>;

const int maxN = 43'000;

int N;

vi mushroom(1+2*maxN, 0);

void dnc(vi L, vi R)
{
    // cerr << "dnc ";
    // for(int l:L) cerr << l << ' ';
    // cerr << " | ";
    // for(int r:R) cerr << r << ' ';
    // cerr << "\n";
    if(int(L.size()) == 1)
        Answer(L[0], R[0]);
    else
    {
        int K = int(L.size());

        vi L1, L2;
        for(int i = 0; i < K/2; i++)
            L1.push_back(L[i]);

        for(int i = K/2; i < K; i++)
            L2.push_back(L[i]);

        int Q;

        for(int l: L1)
            Q = Query(l); //enable

        vi R1, R2;

        for(int r:R)
        {
            int Q1 = Query(r);
            if(Q1 == Q)
            {
                R1.push_back(r);
            }
            else
            {
                R2.push_back(r);
            }
            Q1 = Query(r);
        }

        for(int l: L1)
            Q = Query(l);

        dnc(L1, R1);
        dnc(L2, R2);
    }
}

void Solve(int N_)
{
    N = N_;

    int ct = 0;

    for(int i = 1; i <= 2*N; i++)
    {
        int Q = Query(i);
        if(Q > ct)
        {
            // cerr << "increasing ct = " << ct << " at " << i << '\n';
            ct++;
            mushroom[i] = ct;
            // cerr << i << " : " << mushroom[i] << '\n';
        }
    }
    for(int i = 1; i <= 2*N; i++) Query(i);

    // cerr << "check\n";

    // for(int i = 1; i <= 2*N; i++) cerr << i << " : " << mushroom[i] << '\n';


    vi leftval, rightval;
    for(int i = 1; i <= 2*N; i++)
    {
        if(mushroom[i])
            leftval.push_back(i);
        else
            rightval.push_back(i);
    }



    dnc(leftval, rightval);
}

컴파일 시 표준 에러 (stderr) 메시지

minerals.cpp: In function 'void dnc(vi, vi)':
minerals.cpp:45:13: warning: 'Q' may be used uninitialized in this function [-Wmaybe-uninitialized]
   45 |             if(Q1 == Q)
      |             ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...