Cod sursa(job #1984406)

Utilizator VarticeanNicolae Varticean Varticean Data 24 mai 2017 19:16:56
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#define ll long long
using namespace std;

 ifstream in("cautbin.in");
 ofstream out("cautbin.out");

 int n;
 ll mid, v[100000];

ll caut( ll st, ll dr, ll x){
if( st>dr ) return -1; else{
    ll mid=( st + dr ) /2;
    if ( v[mid]==x ) return mid;
    if ( x>v[mid]) return caut(mid+1, dr, x);
            else return caut(st, mid-1,x);
}
}

int main()
{
    in>>n;
    for(int i=1; i<=n; i++)
        in>>v[i];
    int nr; in>>nr;
   ll x;

    for(int i=1; i<=nr; i++){
        int a; in>>a>>x;
       int m=caut(1,n,x);
       if(m==-1) out<<-1<<'\n';else {
       if ( a==2 ) {
        for(int j=m; j>=1; j--)
        if ( v[j] != v[j-1] ) { out<<j<<'\n'; break;}
       }
        if (a==0 || a==1) { for(int j=m; j<=n-1; j++)
                    if ( v[j] != v[j+1]){ out<<j<<'\n'; break; }
        }

       }

    }

    return 0;
}