Pagini recente » Cod sursa (job #2667011) | Cod sursa (job #2341278) | Cod sursa (job #260680)
Cod sursa(job #260680)
#include <stdio.h>
#include <stdlib.h>
typedef struct operatie{
long int op;
long 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 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,"%lld",&n);
for(i=0;i<n;i++) fscanf(f,"%lld",&v[i]);
fscanf(f,"%lld",&m);
for(i=0;i<m;i++) fscanf(f,"%ld %lld",&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,"%lld\n",j-1);
}
break;
case 1:
j=0;
while(v[j]<o[i].x) j++;
if(v[j]==o[i].x) fprintf(g,"%lld\n",j);
else fprintf(g,"%lld\n",j-1);
break;
case 2:
j=n-1;
while(v[j]>o[i].x) j--;
if(v[j]==o[i].x) fprintf(g,"%lld\n",j);
else fprintf(g,"%lld\n",j+1);
}
fclose(f);
fclose(g);
return 0;
}