Pagini recente » Cod sursa (job #611606) | Cod sursa (job #2367454) | Cod sursa (job #2206196) | Cod sursa (job #2217236) | Cod sursa (job #2269469)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,v[100010],m,t,x;
int binarysearch_1(int a,int b,int val)
{ int m=0;
while( a <= b )
{ int m=(a+b)>>1;
if( val < v[m] ) b=m-1;
else a=m+1;
}
m=a+(b-a)/2;
while( val < v[m] ) m--;
if( val == v[m] ) return m;
return -1;
}
int binarysearch_2(int p, int u, int key)
{ int m, n = u;
while (p < u)
{ m = (p + u) / 2;
if (v[m] <= key) p = m + 1;
else u = m;
}
m = (p + u) / 2;
if (v[m] > key) -- m;
return m;
}
int main()
{ f>>n; for(int i=1;i<=n;++i) f>>v[i];
f>>m;
while( m )
{ f>>t>>x;
if( t == 0 ) g<<binarysearch_1(1,n,x)<<'\n';
else if( t == 1 )
{ if( binarysearch_1(1,n,x) != -1 ) g<<binarysearch_1<<'\n';
else g<<binarysearch_2(1,n,x)<<'\n';
}
m--;
}
g.close();
return 0;
}