제출 #402066

#제출 시각아이디문제언어결과실행 시간메모리
402066victoriad도서관 (JOI18_library)C++14
100 / 100
564 ms296 KiB
#include <cstdio>
#include <vector>
#include "library.h"
using namespace std;
 
 
void Solve(int N)
{ 
  vector<int>res;
  
  if(N==1){
    res.push_back(1);
  }
  
  else{

    int primero;
    vector<int>l(N,1);
          for(int i=0;i<N;i++){
           l[i]--;
            if(Query(l)==1){
           primero=i;
           res.push_back(primero);
            l[i]++;
            break;
            }
          l[i]++;
          }
         
  vector<bool>c(N,false);
  c[primero]=true;
  while(res.size()<N){
    vector<int>libres;
    for(int i=0;i<N;i++){
      if(!c[i]){
		  libres.push_back(i);
	  }
    }
    int low=0,hi=libres.size();
    while(hi-low>1){
      int mid=(hi+low)/2;
	  l.assign(N,0);
      for(int i=0;i<mid;i++)l[libres[i]]++;
      int v=Query(l);
      l[res.back()]++;
      if(v==Query(l)){
        hi=mid;
      }
      else{
        low=mid;
      }
    }
    res.push_back(libres[low]);
    c[libres[low]]=true;
  }
  for(int i=0;i<N;i++)res[i]++;
  }
  Answer(res);
       
}

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

library.cpp: In function 'void Solve(int)':
library.cpp:32:19: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   32 |   while(res.size()<N){
      |         ~~~~~~~~~~^~
library.cpp:31:12: warning: 'primero' may be used uninitialized in this function [-Wmaybe-uninitialized]
   31 |   c[primero]=true;
      |            ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...