Pagini recente » Cod sursa (job #1933071) | Cod sursa (job #2336421) | Cod sursa (job #382128) | Cod sursa (job #1258562) | Cod sursa (job #2789989)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int a[100100], m, n;
int cautare1(int x)
{
int li = 1, lf = n, m = (li + lf) / 2;
while(li <= lf)
{
if(x >= a[m])
li = m + 1;
else
lf = m - 1;
m = (li + lf) / 2;
}
if(lf <= n && a[lf] == x)
return lf;
else
return -1;
}
int cautare2(int x)
{
int li = 1, lf = n, m = (li + lf) / 2;
while(li <= lf)
{
if(x < a[m])
lf = m - 1;
else
li = m + 1;
m = (li + lf) / 2;
}
return lf;
}
int cautare3(int x)
{
int li = 1, lf = n, m = (li + lf) / 2;
while(li <= lf)
{
if(x > a[m])
li = m + 1;
else
lf = m - 1;
m = (li + lf) / 2;
}
return li;
}
int main()
{
int x, p = 0, b[100000], c;
fin >> n;
for(int i = 1; i <= n; i++)
fin >> a[i];
fin >> m;
while(p < m)
{
fin >> c >> x;
b[c] = x;
p++;
}
for(int i = 0; i < m; i++)
{
if(i == 0)
fout << cautare1(b[i]) << "\n";
if(i == 1)
fout << cautare2(b[i]) << "\n";
if(i == 2)
fout << cautare3(b[i]) << "\n";
}
return 0;
}