Pagini recente » Cod sursa (job #2097880) | Cod sursa (job #2982370) | Cod sursa (job #625573) | Cod sursa (job #2661778) | Cod sursa (job #490327)
Cod sursa(job #490327)
#include "stdio.h"
using namespace std;
int n,v[100];
int cerinta1(int x)
{
int p,u,m;
p=1;
u=n;
while(p<=u)
{
m=(p+u)/2;
if(v[m]<=x)
p=m+1;
else
u=m-1;
}
p--;
if(v[p]==x)
return p;
return -1;
}
int cerinta2(int x)
{
int p,u,m;
p=1;
u=n;
while(p<=u)
{
m=(p+u)/2;
if(v[m]<=x)
p=m+1;
else
u=m-1;
}
p--;
if(v[p]<=x)
return p;
return 0;
}
int cerinta3(int x)
{
int p,u,m;
p=1;
u=n;
while(p<=u)
{
m=(p+u)/2;
if(v[m]<x)
p=m+1;
else
u=m-1;
}
u++;
if(v[u]>=x)
return u;
return 0;
}
int main()
{
FILE* f=fopen("cautbin.in","r");
FILE* g=fopen("cautbin.out","w");
int x,caz,M,i;
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
fscanf(f,"%d",&M);
for(i=1;i<=M;i++)
{
fscanf(f,"%d %d",&caz,&x);
switch(caz)
{
case 0:
fprintf(g,"%d\n",cerinta1(x));
break;
case 1:
fprintf(g,"%d\n",cerinta2(x));
break;
case 2:
fprintf(g,"%d\n",cerinta3(x));
break;
}
}
return 0;
}