Pagini recente » Cod sursa (job #1553189) | Cod sursa (job #2080460)
#include <iostream>
#include <cstdio>
using namespace std;
const int L = 17;
int v[100001];
int main()
{
FILE *fin, *fout;
int n, r, pas, i, m, tip, val, cr, cv;
fin=fopen("cautbin.in", "r");
fout=fopen("cautbin.out", "w");
fscanf(fin, "%d\n", &n);
for(i=0; i<n; i++)
fscanf(fin, "%d ", &v[i]);
fscanf(fin, "\n%d\n", &m);
while(m>0)
{
fscanf(fin, "%d %d\n", &tip, &val);
r=0;
pas=1<<L;
while(pas!=0)
{
if(r+pas<n && v[r+pas]<=val)
r+=pas;
pas/=2;
}
if(tip==0)
{
if(v[r]==val)
fprintf(fout, "%d\n", r+1);
else
fprintf(fout, "-1\n");
}
if(tip==1)
{
pas=1<<L;
r++;
fprintf(fout, "%d\n", r);
}
if(tip==2)
{
if(v[r]==val)
{
while(v[r]==val)
r--;
r=r+1;
}
else
while(v[r]<val)
r++;
fprintf(fout, "%d\n", r+1);
}
m--;
}
fclose(fin);
fclose(fout);
return 0;
}