Cod sursa(job #2436377)

Utilizator liviu_gheorghe1234Liviu Gheorghe liviu_gheorghe1234 Data 5 iulie 2019 16:45:42
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
vector <int> A;
int N,x,o,q;
int binSearch(int left,int right,int value)
{
	if(left>right) return -1;
	int middle=left+(right-left)/2;
	if(value==A[middle]) return middle;
	if(value>A[middle]) return binSearch(middle+1,right,value);
	else return binSearch(left,middle-1,value);
}
void solveQuery(int o,int x)
{
  	int pos=binSearch(0,A.size()-1,x);
  	int dp=pos;
  	switch(o)
  	{
  	case 0: dp++; while(A[dp]==A[pos]) dp++; fout<<dp; break;
  	case 1: dp--; while(A[dp]==A[pos]) dp--; fout<<dp+1; break;
  	case 2: dp++; while(A[dp]==A[pos]) dp++; fout<<dp+1; break;
  	}
  	fout<<' ';
}
void read()
{
  fin>>N;
  for(int i=0;i<N;i++)
  {
  	fin>>x;
  	A.push_back(x);
  }
  fin>>q;
  for(int i=0;i<q;i++)
  {
  	fin>>o>>x;
  	solveQuery(o,x);
  }
}
int  main()
{
	read();


return 0;
}