Pagini recente » Cod sursa (job #2120426) | Cod sursa (job #3295077) | Cod sursa (job #1543519) | Cod sursa (job #635771) | Cod sursa (job #1193187)
#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 << endl;
continue;
}
if ( tip == 1 )
{
poz = tip1(nr);
out << poz<<endl;
continue;
}
poz = tip2(nr);
out << poz<< endl;
}
return 0;
}