제출 #102567

#제출 시각아이디문제언어결과실행 시간메모리
102567tinjyu커다란 상품 (IOI17_prize)C++14
컴파일 에러
0 ms0 KiB
#include "prize.h"
#include <bits/stdc++.h>
using namespace std;
int m,ball=0,a[200005][2],ans=-1;
int find(int x)
{
	if(a[x][0]==-1)
	{
		std::vector<int> res = ask(x);
		a[x][0]=res[0];
		a[x][1]=res[1];
	}
	return 0;
}
int solve(int s,int e){
	//cout<<s<<" "<<e<<endl;
	if(s>=e-1)return 0;
	if(ans!=-1)return 0;
	if(s+e%2==0)int ne=(s+e)/2,ns=(s+e)/2;
	else int ne=(s+e)/2+1,ns=(s+e)/2+1;
	while(ns<e)
	{
		find(ns);
		if(a[ns][0]+a[ns][1]==0)
		{
			ans=ns;
			return 0;
		}
		if(a[ns][0]+a[ns][1]!=ball)ns++;
		else break;
	}
	while(s<ne)
	{
		find(ne);
		if(a[ne][0]+a[ne][1]==0)
		{
			ans=ne;
			break;
		}
		if(a[ne][0]+a[ne][1]!=ball)ne--;
		else break;
	}
	//cout<<ne<<" "<<ns<<endl;
	if(a[s][0]!=a[ne][0] )solve(s,ne);
	if(a[ns][0]!=a[e][0] )solve(ns,e);
}
int find_best(int n) {
	for(int i=0;i<n;i++)
	{
		a[i][0]=-1;
		a[i][1]=-1;
	}
	for(int i = 0; i < 473; i++) {
		find(i);
		//cout<<a[i][0]<<" "<<a[i][1]<<endl;
		if(a[i][0]+a[i][1]==0)
		{
			ans=i;
			break;
		}
		if(a[i][0] + a[i][1] > ball)
		{
			m=i;
			ball=a[i][0]+a[i][1];
		}
	}
	if(ans!=-1)return ans;
 
//	cout<<m<<endl;
	int start=0,end=n-1;
	while(true)
	{
		find(start);
		if(a[start][0]+a[start][1]==0)ans=start;
		if(a[start][0]+a[start][1]!=ball)start++;
		else break;
	}
	while(true)
	{
		find(end);
		if(a[end][0]+a[end][1]==0)ans=end;
		if(a[end][0]+a[end][1]!=ball)end--;
		else break;
	}
	if(ans!=-1)return ans;
	//cout<<start<<" "<<end<<endl;
	solve(start,m);
	solve(m,end);
	return ans;
}

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

prize.cpp: In function 'int solve(int, int)':
prize.cpp:19:18: warning: unused variable 'ne' [-Wunused-variable]
  if(s+e%2==0)int ne=(s+e)/2,ns=(s+e)/2;
                  ^~
prize.cpp:19:29: warning: unused variable 'ns' [-Wunused-variable]
  if(s+e%2==0)int ne=(s+e)/2,ns=(s+e)/2;
                             ^~
prize.cpp:20:11: warning: unused variable 'ne' [-Wunused-variable]
  else int ne=(s+e)/2+1,ns=(s+e)/2+1;
           ^~
prize.cpp:20:24: warning: unused variable 'ns' [-Wunused-variable]
  else int ne=(s+e)/2+1,ns=(s+e)/2+1;
                        ^~
prize.cpp:21:8: error: 'ns' was not declared in this scope
  while(ns<e)
        ^~
prize.cpp:21:8: note: suggested alternative: 's'
  while(ns<e)
        ^~
        s
prize.cpp:32:10: error: 'ne' was not declared in this scope
  while(s<ne)
          ^~
prize.cpp:32:10: note: suggested alternative: 'e'
  while(s<ne)
          ^~
          e
prize.cpp:44:16: error: 'ne' was not declared in this scope
  if(a[s][0]!=a[ne][0] )solve(s,ne);
                ^~
prize.cpp:44:16: note: suggested alternative: 'e'
  if(a[s][0]!=a[ne][0] )solve(s,ne);
                ^~
                e
prize.cpp:45:7: error: 'ns' was not declared in this scope
  if(a[ns][0]!=a[e][0] )solve(ns,e);
       ^~
prize.cpp:45:7: note: suggested alternative: 's'
  if(a[ns][0]!=a[e][0] )solve(ns,e);
       ^~
       s