Cod sursa(job #443628)

Utilizator andunhillMacarescu Sebastian andunhill Data 17 aprilie 2010 19:29:56
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int sir[100001],n,deci,x,m;
void citire()
{ for(int i=1;i<=n;i++)
	f>>sir[i];
}
void solve()
{ int st=1,dr=n,mijl,sol;
  bool ok=0;
  f>>deci>>x;
  if(deci==0)
  { while(st<=dr)
	{ mijl=(st+dr)/2;
	  if(sir[mijl]==x)
	  { st=mijl+1;
	    sol=mijl;
	  }
	  else
		dr=mijl-1;
	}
	g<<sol<<'\n';
  }
  else
	if(deci==1)
	{ while(st<=dr)
	  { mijl=(st+dr)/2;
		if(sir[mijl]<=x)
		{ st=mijl+1;
		  sol=mijl;
		}
		else
		dr=mijl-1;
	  }
	g<<sol<<'\n';
	}
	else
	{ while(st<=dr)
	  { mijl=(st+dr)/2;
		if(sir[mijl]>=x)
		{ dr=mijl-1;
		  sol=mijl;
		}
		else
			st=mijl+1;
	  }
	g<<sol<<'\n';
	}
} 
int main()
{ f>>n;
  citire();
  f>>m;
  for(int i=1;i<=m;i++)
	solve();
  f.close();
  g.close();
  return 0;
}