Mai intai trebuie sa te autentifici.
Cod sursa(job #1294126)
| Utilizator | Data | 16 decembrie 2014 23:44:45 | |
|---|---|---|---|
| Problema | Cautare binara | Scor | 40 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 1.05 kb |
#include <algorithm>
#include <vector>
#include <set>
#include <cstdio>
using namespace std;
FILE *f=fopen("cautbin.in","r");
FILE *g=fopen("cautbin.out","w");
vector <int> v;
vector <int> ::iterator it;
int main()
{int i,j,n,m,op,x;
fscanf(f,"%d",&n);
for (i=1;i<=n;i++) {fscanf(f,"%d",&j);
v.push_back(j);}
fscanf(f,"%d",&m);
for (i=1;i<=m;i++)
{fscanf(f,"%d %d",&op,&x);
if (op==0) {it=upper_bound(v.begin(),v.end(),x);
it--;
if (*it==x) fprintf(g,"%d\n",it-v.begin()+1);
else fprintf(g,"-1\n");
}else
if (op==1) {it=lower_bound(v.begin(),v.end(),x);
if (*it!=x) it--;;
fprintf(g,"%d\n",it-v.begin()+1);
}else
{it=upper_bound(v.begin(),v.end(),x);
it--;
if (*it!=x) it++;
fprintf(g,"%d\n",it-v.begin()+1);
}
}
return 0;
}
