Cod sursa(job #578586)

Utilizator @LynTirla Alin @Lyn Data 11 aprilie 2011 13:25:45
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>
#include<iostream>
using namespace std;
int n,m,sir[100001],k=0;
ifstream f1("cautbin.in");
ofstream f2("cautbin.out");
void caut(int gen,int nr)
{int stanga,dreapta,mij,ok=1;
	stanga=1;
dreapta=n;
k++;
while(stanga<dreapta)
	{mij=(stanga+dreapta)/2;
	if(sir[mij]>nr) dreapta=mij-1;
		else stanga=mij+1;	
	}
if(!gen)
	{while(ok)
		{if(sir[mij+1]==nr) mij++;
		else ok=0;
			
		}
	}
else if(gen==1)
	{while(ok)
		if(sir[mij+1]>sir[mij]) break;
	else m++;
	}
	else 
		while(ok)
			{if(sir[mij-1]<sir[mij]) break;
		else mij--;
			
			}
f2<<mij<<'\n';
}
void citire()
{f1>>n;
for(int i=1;i<=n;++i)
	f1>>sir[i];
f1>>m;
}
int main()
{int gen,nr;
citire();
for(int i=1;i<=m;i++)
	{f1>>gen>>nr;
	caut(gen,nr);	
	}

return 0;
}