Cod sursa(job #327609)

Utilizator LuffyBanu Lavinia Luffy Data 29 iunie 2009 16:12:38
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<stdio.h>
#define dim 100001
char s[dim];
int poz[dim];
using namespace std;
int main()
{short int q;
int nr,i,n,m,p=0,j,num;
FILE *f=fopen("cautbin.in","r"), *g=fopen("cautbin.out","w");

fscanf(f,"%d",&n);
 for(i=1;i<=n;i++)
 {fscanf(f,"%d",&nr); s[nr]=1; p++; poz[nr]=p;}

 fscanf(f,"%d",&m);
 for(i=1;i<=m;i++)
  {fscanf(f,"%hd%d",&q,&num);
   if(q==0) {if(s[num]==1) fprintf(g,"%d\n",poz[num]);
             else fprintf(f,"-1\n");}
   if(q==1) {if(s[num]==1) fprintf(g,"%d\n",poz[num]);
             else for(j=num;j>=1;j--) if(s[j]==1) {fprintf(g,"%d\n",poz[j]); break;} }
   if(q==2) {if(s[num]==1) fprintf(g,"%d\n",poz[num]);
             else for(j=num;j<=100000;j++) if(s[j]==1) {fprintf(g,"%d\n",poz[j]); break;} }
}
fclose(f);
fclose(g);
return 0;
}