Pagini recente » Cod sursa (job #3158173) | Cod sursa (job #921511) | Cod sursa (job #1850691) | Cod sursa (job #3167765) | Cod sursa (job #1193194)
#include <fstream>
using namespace std;
int a[100001], n, m;
int tip0(int x)
{
int i = 0, pas;
pas = 1 << 16;
while( pas != 0 )
{
if ( i + pas <= n && a[i + pas] <= x )
i+=pas;
pas/=2;
}
if ( a[i] == x )
return i;
else return -1;
}
int tip1(int x)
{
int i = 0, pas;
pas = 1 << 16;
while( pas != 0 )
{
if ( i + pas <= n && a[i + pas] <= x)
i+=pas;
pas/=2;
}
return i;
}
int tip2(int x)
{
int i = 0, pas;
pas = 1 << 16;
while( pas != 0 )
{
if ( i + pas <= n && a[i + pas] < x )
i+=pas;
pas/=2;
}
return 1+i;
}
int main()
{
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int i,poz, tip, nr;
in >> n;
for( i = 1; i <= n; i++ )
in >> a[i];
in >> m;
for ( i = 1; i <= m; i++ )
{
in >> tip >> nr;
if ( tip == 0 )
{
poz = tip0(nr);
out << poz <<'\n';
continue;
}
if ( tip == 1 )
{
poz = tip1(nr);
out << poz<<'\n';
continue;
}
poz = tip2(nr);
out << poz<<'\n';
}
return 0;
}