Pagini recente » Cod sursa (job #1818534) | Cod sursa (job #1103870) | Cod sursa (job #2578149) | Cod sursa (job #812847) | Cod sursa (job #1137391)
#include <fstream>
#include <stdio.h>
using namespace std;
int n,i,m,j, st, dr, mij;
unsigned int v[200010];
int opt, val;
FILE *fin;
FILE *fout;
void opt0(int val)
{
st = 0;
dr = n-1;
while (st<=dr)
{
mij = st + (dr-st)/2;
if (v[mij] <= val)
st = mij+1;
else
dr = mij-1;
}
mij = st + (dr-st)/2;
if (v[mij] > val)
mij--;
if (v[mij] == val)
fprintf(fout, "%d\n", mij+1);
else
fprintf(fout, "%d\n", -1);
}
void opt1(int val)
{
st = 0;
dr = n-1;
while (st<dr)
{
mij = st + (dr-st)/2;
if (v[mij] <= val)
st = mij+1;
else
dr = mij-1;
}
mij = st + (dr-st)/2;
if (v[mij] > val)
mij--;
fprintf(fout, "%d\n", mij+1);
}
void opt2(int val)
{
st = 0;
dr = n-1;
while (st<dr)
{
mij = st + (dr-st)/2;
if (v[mij] < val)
st = mij+1;
else
dr = mij-1;
}
mij = st + (dr-st)/2;
if (v[mij] < val)
mij++;
fprintf(fout, "%d\n", mij+1);
}
int main()
{
fin = fopen("cautbin.in","r");
fout = fopen("cautbin.out", "w");
fscanf(fin, "%d", &n);
for (i=0;i<n;i++)
fscanf(fin,"%u ", &v[i]);
fscanf(fin, "%d", &m);
for (j=0;j<m;j++)
{
fscanf(fin, "%d %d", &opt, &val);
switch(opt)
{
case 0: opt0(val); break;
case 1: opt1(val); break;
case 2: opt2(val); break;
default : break;
}
}
fclose(fin);
fclose(fout);
return 0;
}