Pagini recente » Cod sursa (job #2097542) | Cod sursa (job #533805) | Cod sursa (job #670895) | Cod sursa (job #2690655) | Cod sursa (job #260675)
Cod sursa(job #260675)
#include <stdio.h>
#include <stdlib.h>
typedef struct operatie{
int op;
long x;
} interogare;
#define DIMMAX 100000
#define deschidere(cale,mod,flux)\
if((flux=fopen(cale,mod))==NULL){\
printf("\nNu se poate deschide fisierul %s.\n",cale);\
exit(1);\
}
int main(){
long v[DIMMAX],n,m,i,j;
interogare o[DIMMAX];
FILE *f,*g;
deschidere("cautbin.in","rt",f);
deschidere("cautbin.out","wt",g);
fscanf(f,"%ld",&n);
for(i=0;i<n;i++) fscanf(f,"%ld",&v[i]);
fscanf(f,"%ld",&m);
for(i=0;i<m;i++) fscanf(f,"%u %ld",&o[i].op,&o[i].x);
for(i=0;i<m;i++)
switch(o[i].op){
case 0:
j=0;
while(v[j]<o[i].x) j++;
if(v[j]!=o[i].x) fprintf(g,"-1\n");
else{
while(v[j]==o[i].x) j++;
fprintf(g,"%ld\n",j-1);
}
break;
case 1:
j=0;
while(v[j]<o[i].x) j++;
if(v[j]==o[i].x) fprintf(g,"%ld\n",j);
else fprintf(g,"%ld\n",j-1);
break;
case 2:
j=n-1;
while(v[j]>o[i].x) j--;
if(v[j]==o[i].x) fprintf(g,"%ld\n",j);
else fprintf(g,"%ld\n",j+1);
}
fclose(f);
fclose(g);
return 0;
}