Pagini recente » Borderou de evaluare (job #1795029) | Borderou de evaluare (job #1008095) | Borderou de evaluare (job #2882114) | Borderou de evaluare (job #512820) | Cod sursa (job #531654)
Cod sursa(job #531654)
# include <iostream>
# include <fstream>
using namespace std;
int task1 (int x[100005] , int a , int n)
{
int st = 1 , dr = n , mij;
while (st < dr - 1)
{
mij = (st + dr) / 2;
if (x[mij] == a)
st = mij;
else if (x[mij] < a)
st = mij + 1;
else dr = mij - 1;
}
if (x[st] == a)
return st;
else if (x[dr] == a)
return dr;
return -1;
}
int task2 (int x[100005] , int a , int n)
{
int st = 1 , dr = n , mij;
while (st < dr - 1)
{
mij = (st + dr) / 2;
if (x[mij] <= a)
st = mij;
else dr = mij - 1;
}
if (x[dr] <= a)
return dr;
return st;
}
int task3 (int x[100005] , int a , int n)
{
int st = 1 , dr = n , mij;
while (st < dr)
{
mij = (st + dr) / 2;
if (x[mij] < a)
st = mij + 1;
else dr = mij;
}
return st;
}
int main()
{
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
int x[100005] , n , m , nr , task;
f >> n;
for (int i = 1 ; i <= n ; ++i)
f >> x[i];
f >> m;
for (int i = 1 ; i <=m ; ++i)
{
f >> task >> nr;
if (task == 0)
g << task1 (x , nr , n) << "\n";
else if (task == 1)
g << task2 (x , nr , n) << "\n";
else g << task3 (x , nr , n) << "\n";
}
return 0;
}