제출 #70065

#제출 시각아이디문제언어결과실행 시간메모리
70065E869120커다란 상품 (IOI17_prize)C++14
컴파일 에러
0 ms0 KiB
#include "prize.h" #include <bits/stdc++.h> using namespace std; vector<int>vec;int N,Query=0; pair<int,int> asks(int p){ Query++; vector<int>Z = ask(p); return make_pair(Z[0],Z[1]); } int find_best(int n) { srand((unsigned)time(NULL)); for(int i=0;i<N;i++) R[i]=make_pair(-1,-1); N=n; vector<int>vec;for(int i=0;i<n;i++) vec.push_back(i); while(vec.size()>=2){ int minx=0; if(vec.size()>=30){ for(int i=0;i<5;i++){ pair<int,int>A=asks(vec[rand()%vec.size()]); minx=max(minx,A.first+A.second); } } else{ for(int i=0;i<vec.size();i++){ pair<int,int>A=asks(vec[i]); minx=max(minx,A.first+A.second); } } int s = 0;for(int i=0;i<20;i++){if((1<<i)<=vec.size()) s=i+1;} int cnt=0,ret=0;vector<int>vec2; while(true){ int c = 0; for(int i=s-1;i>=0;i--){ int pos = vec[min(c + (1<<i), (int)vec.size() - 1)]; if(pos <= ret) c += (1<<i); else{ pair<int,int>Z = asks(pos); if(Z.first+Z.second==minx && Z.first<=cnt) c+=(1<<i); } } if(c==(1<<s)-1){ break; } else{ // results = vec[c + 1] if(c == 0){ int pos = vec[0]; pair<int, int> Z = asks(pos); if(Z.first + Z.second != minx) c = -1; } vec2.push_back(vec[c + 1]); ret = vec[c + 1]; } cnt++; } vec=vec2; } assert(Query<=10000); return vec[0]; }

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

prize.cpp: In function 'int find_best(int)':
prize.cpp:15:23: error: 'R' was not declared in this scope
  for(int i=0;i<N;i++) R[i]=make_pair(-1,-1);
                       ^
prize.cpp:28:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(int i=0;i<vec.size();i++){
                ~^~~~~~~~~~~
prize.cpp:34:44: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   int s = 0;for(int i=0;i<20;i++){if((1<<i)<=vec.size()) s=i+1;}
                                      ~~~~~~^~~~~~~~~~~~