Pagini recente » Cod sursa (job #2580099) | Cod sursa (job #2685913) | Cod sursa (job #2668913) | Cod sursa (job #1308896) | Cod sursa (job #1391784)
#include <fstream>
using namespace std;
FILE*fin=fopen("date.in","r");
FILE*fout=fopen("date.out","w");
int a[100001],n,x,m,c;
void cauta0(int x)
{
int st=1,dr=n,poz=-1,mij;
while(st<=dr)
{
mij=(st+dr)/2;
if(a[mij]==x){ poz=mij; st=mij+1;}
else
if(a[mij]<x)
st=mij+1;
else
dr=mij-1;
}
fprintf(fout,"%d\n",poz);
}
void cauta1(int x)
{
int st=1,dr=n,poz,mij;
while(st<=dr)
{
mij=(st+dr)/2;
if(a[mij]<=x){ poz=mij; st=mij+1;}
else
dr=mij-1;
}
fprintf(fout,"%d\n",poz);
}
void cauta2(int x)
{
int st=1,dr=n,poz,mij;
while(st<=dr)
{
mij=(st+dr)/2;
if(a[mij]>=x){ poz=mij; dr=mij-1;}
else
st=mij+1;
}
fprintf(fout,"%d\n",poz);
}
int main()
{
int i;
fscanf(fin,"%d\n",&n);
for(i=1;i<n;i++)
fscanf(fin,"%d ",&a[i]);
fscanf(fin,"%d\n",&a[n]);
fscanf(fin,"\n%d\n",&m);
for(i=1;i<=m;i++)
{
fscanf(fin,"%d %d\n",&c,&x);
if(c==0) cauta0(x);
else
if(c==1) cauta1(x);
else cauta2(x);
}
return 0;
}