Cod sursa(job #1098295)

Utilizator test9cosmin Macovei test9 Data 4 februarie 2014 18:24:30
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
using namespace std;
int i,n,p,u,m,x,M,tip,j,pmax,poz;
int v[100002];
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int main() {
  f>>n;
  for (i=1;i<=n;i++)
    f>>v[i];
  f>>M;
  for (i=1;i<=M;i++) {
    f>>tip>>x;
    if (tip==0) {
      p=1;
      u=n;
      pmax =-1;
      while (p<=u) {
    	m=p+(u-p)/2;
    	if (x==v[m])
      		if (m>pmax)
       		 pmax=m;
    	if (x>v[m])
     		p=m+1;
    	else
     	 u=m-1;
      }
     g<<pmax<<'\n';
    }
    if (tip==1) {
      p=1;
      u=n;
      while (p<=u) {
    	m=p+(u-p)/2;
        if (v[m]<=x) {
     		 poz = m;
      		p = m+1;
    	}
        else
     	 u = m-1;
      }
      g<<poz<<'\n';
    }
    if (tip==2) {
      p=1;
      u=n;
      while (p<=u) {
    	m=p+(u-p)/2;
    	if (x<=v[m]) {
      		poz = m;
      		u=m-1;
    	}
        else
     	 p=m+1;
      }
      g<<poz<<'\n';
    }
  }
  g.close();
  return 0;
}