Cod sursa(job #291188)

Utilizator LuffyBanu Lavinia Luffy Data 29 martie 2009 15:07:14
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include<fstream>
#define dim 100001
using namespace std;
unsigned int a[dim];
int main()
{unsigned int n,m,nr,i,j,poz;
int x;
  ifstream f("cautbin.in");
  ofstream g("cautbin.out");
 f>>n;
  for(i=1;i<=n;i++)
   f>>a[i];
 f>>m;
   for(j=1;j<=m;j++)
  {
   f>>x>>nr; 
    if(x==0)
	{ if(a[n/2]==nr) g<<n/2<<'\n';
      if(a[n/2]<nr) 
       for(i=n/2;i<=n;i++)
        if(a[i]==nr) {g<<i<<'\n'; break;}
      
	  if(a[n/2]>nr)
       for(i=n/2;i>=1;i--)
        if(a[i]==nr) {g<<i<<'\n'; break;}
    }
   
    if(x==2)
	{if(a[n/2]<nr)
	 for(i=n/2;i<=n;i++)
       if(a[i]>=nr) {poz=i; break;}
    
     if(a[n/2]==nr) g<<n/2<<'\n';
    
     if(a[n/2]>nr)
      for(i=1;i<=n/2;i++)
        if(a[i]>=nr) {poz=i; break;}
    g<<poz<<'\n';
		}
	
	if(x==1)
	{ 
	if(a[n/2]<nr)
     {for(i=n/2;i<=n;i++)
       if(a[i]<=nr) 
	   {poz=i;break;}
      g<<poz<<'\n';
	 }
    if(a[n/2]==nr) g<<n/2<<'\n';
	 
    if(a[n/2]>nr)
     {for(i=1;i<=n/2;i++)
       if(a[i]<=nr) {poz=i; break;}
	   g<<poz<<'\n';}} 
	}
	
f.close();  
g.close();
return 0;
}