Pagini recente » Cod sursa (job #2670180) | Cod sursa (job #2902435) | Cod sursa (job #2445202) | Cod sursa (job #2951215) | Cod sursa (job #786599)
Cod sursa(job #786599)
#include <fstream>
using namespace std;
const int K = 16;
const int W = 100000;
unsigned int v[W];
int cautb0 (unsigned int x,unsigned int n)
{
int i=0,pas=1<<K;
while (pas!=0)
{
if (i+pas<n&&v[i+pas]<=x)
i+=pas;
pas/=2;
}
if(v[i] == x)
return i;
else
return -2;
}
int cautb1 (unsigned int x,unsigned int n)
{
int i=0,pas=1<<K;
while (pas!=0)
{
if (i+pas<n&&v[i+pas]<=x)
i+=pas;
pas/=2;
}
return i;
}
int cautb2 (unsigned int x, unsigned int n)
{
int i=0,pas=1<<K;
while (pas!=0)
{
if (i+pas<n&&v[i+pas]<x)
i+=pas;
pas/=2;
}
return 1+i;
}
int main()
{
//FILE * fin, *fout;
//fin=fopen("cautbin.in","r");
//fout=fopen("cautbin.out","w");
ifstream in("cautbin.in");
ofstream out("cautbin.out");
unsigned int n,i,nri,intrebare,x;
int d;
//fscanf(fin,"%u",&n);
in >> n;
for (i=0; i<n; i++)
{
//fscanf(fin,"%u",&v[i]);
in >> v[i];
}
//fscanf(fin,"%u",&nri);
in >> nri;
for (i=1; i<=nri; i++)
{
//fscanf(fin,"%u",&intrebare);
//fscanf(fin,"%u",&x);
in >> intrebare >> x;
if (intrebare==0)
d=cautb0(x,n);
if (intrebare==1)
d=cautb1(x,n);
if (intrebare==2)
d=cautb2(x,n);
//fprintf (fout,"%d\n",d + 1);
out << (d+1) << "\n";
}
//fclose(fin);
//fclose(fout);
return 0;
}