Cod sursa(job #1448604)

Utilizator DrumeaVDrumea Vasile DrumeaV Data 7 iunie 2015 17:06:37
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <stdio.h>
#include <algorithm>
using namespace std;
const int Dim = 100100;

int N,M,S[Dim],Sol;

int main()
{
    int i,Tip,X;

    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);

     scanf("%d",&N);

     for (i = 1;i <= N;i++)
          scanf("%d",&S[i]);

     scanf("%d",&M);

     for (i = 1;i <= M;i++)
     {
         scanf("%d%d",&Tip,&X);
         switch (Tip)
         {
         case 0:
            Sol = upper_bound(S + 1,S + N + 1,X) - S - 1;
            if (Sol <= N && Sol >= 1 && S[Sol] == X)
                printf("%d\n",Sol);
            else
                printf("-1\n");
            break;

         case 1:
             Sol = lower_bound(S + 1,S + N + 1,X + 1) - S - 1;
             printf("%d\n",Sol);
             break;

         case 2:
             Sol = upper_bound(S + 1,S + N + 1,X - 1) - S;
             printf("%d\n",Sol);
         }
     }
}