제출 #900652

#제출 시각아이디문제언어결과실행 시간메모리
900652alexander707070Super Dango Maker (JOI22_dango3)C++17
100 / 100
671 ms1152 KiB
#include<bits/stdc++.h>
#include "dango3.h"
using namespace std;

int n,m;

int li[10007],tim;
vector<int> v;

void solve(vector<int> el){

    if(el.size()==n){
        Answer(el); return;
    }

    int half=(el.size()/n)/2;
    vector<int> curr,rest;
    deque<int> d;

    int l=half*n,r=el.size(),mid;

    while(l+1<r){
        mid=(l+r)/2;

        curr.clear();
        for(int p=0;p<mid;p++){
            curr.push_back(el[p]);
        }

        if(Query(curr)>=half){
            r=mid;
        }else{
            l=mid;
        }
    }
    
    curr.clear();
    for(int i=0;i<r;i++)curr.push_back(el[i]);

    for(int i:curr)d.push_back(i);

    int sz=curr.size(),rem=0;
    for(int i=0;i<sz;i++){
        rem=d.back();
        d.pop_back();

        curr={};
        for(int f=0;f<d.size();f++){
            curr.push_back(d[f]);
        }

        if(Query(curr)==half)continue;
        else d.push_front(rem);

        if(int(d.size())==half*n)break;
    }

    tim++; curr.clear();
    for(int i=0;i<d.size();i++){
        curr.push_back(d[i]);
        li[d[i]]=tim;
    }

    for(int i=0;i<el.size();i++){
        if(li[el[i]]!=tim){
            rest.push_back(el[i]);
        }
    }
    
    solve(curr);
    solve(rest);
}

void Solve(int N, int M){
    n=N; m=M;

    for(int i=1;i<=n*m;i++){
        v.push_back(i);
    }

    solve(v);
}

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

dango3.cpp: In function 'void solve(std::vector<int>)':
dango3.cpp:12:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   12 |     if(el.size()==n){
      |        ~~~~~~~~~^~~
dango3.cpp:48:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::deque<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |         for(int f=0;f<d.size();f++){
      |                     ~^~~~~~~~~
dango3.cpp:59:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::deque<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |     for(int i=0;i<d.size();i++){
      |                 ~^~~~~~~~~
dango3.cpp:64:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   64 |     for(int i=0;i<el.size();i++){
      |                 ~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...