제출 #431296

#제출 시각아이디문제언어결과실행 시간메모리
431296Belgutei커다란 상품 (IOI17_prize)C++17
20 / 100
109 ms296 KiB
#include "prize.h" #include<bits/stdc++.h> using namespace std; #define ll long long #define ff first #define ss second #define pb push_back #define mk make_pair vector<int> v; int ans,mx; void solve(int k){ for(int i=0; i<k; i++){ vector<int> vv; vv=ask(i); if(vv[0]==0 && vv[1]==0){ ans=i; break; } } } void dfs(int x, int y){ if(x>y) return; vector<int> v1; vector<int> v2; v1=ask(x); if(x==y){ if(v1[0]+v1[1]!=mx) v.pb(x); return; } v2=ask(y); int a=v1[0]; int b=v1[1]; int c=v2[0]; int d=v2[1]; if(a+b==mx && c+d==mx){ if(c-a==0 || x==y) return; int mid=(x+y)/2; dfs(x+1,mid); dfs(mid+1,y); } else{ if(a+b<mx && c+d<mx){ v.pb(x); v.pb(y); dfs(x+1,y-1); return; } if(a+b<mx){ v.pb(x); dfs(x+1,y); return; } v.pb(y); dfs(x,y-1); } } int find_best(int n) { if(n<=5000){ solve(n); return ans; } for(int i=0; i<1000; i++){ vector<int> vv; vv=ask(i); mx=max(mx,vv[0]+vv[1]); } int l=0; int r=n-1; dfs(l,r); for(int i=0; i<v.size(); i++){ vector<int> vv; vv=ask(v[i]); if(vv[0]==0 && vv[1]==0){ return v[i]; } } return ans; }

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

prize.cpp: In function 'int find_best(int)':
prize.cpp:76:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   76 |  for(int i=0; i<v.size(); i++){
      |               ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...