Pagini recente » Cod sursa (job #2439396) | Cod sursa (job #2909738) | Cod sursa (job #2130805) | Cod sursa (job #511830) | Cod sursa (job #2109444)
///Se da un sir de numere ordonat crescator cu N elemente, si se cere sa se raspunda la M intrebari de tipul:
///0 x - cea mai mare pozitie pe care se afla un element cu valoarea x sau -1 daca aceasta valoare nu se gaseste in sir
///1 x - cea mai mare pozitie pe care se afla un element cu valoarea mai mica sau egala cu x in sir. Se garanteaza ca cel mai mic numar al sirului este mai mic sau egal decat x
///2 x - cea mai mica pozitie pe care se afla un element cu valoarea mai mare sau egala cu x in sir. Se garanteaza ca cel mai mare numar din sir este mai mare sau egal decat x
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int main()
{
int n;
f>>n;
int a[n], m, ls=-1, li=-1, e ,v, j=-1,k=0;
for(int i=0; i<n; i++)
{
f>>a[i];
}
f>>m;
int b[m];
for(int i=0; i<m ;i++)
{
ls=n;
li=0;
f>>e;
f>>v;
if(e==0)
{
b[k++];
ls=n;
li=0;
while(li<ls)
{
j=(li+ls)/2;
if(a[j]==v)
b[k]=j;
else
if(v>=a[j])
li+=1;
else
ls-=1;
}
}
if(e==1)
{
b[k++];
ls=n;
li=0;
while(li<ls)
{
j=(li+ls)/2;
if(a[j]==v)
b[k]=j;
else
if(v<=a[j])
ls-=1;
else
li+=1;
}
}
if(e==2)
{
b[k++];
ls=n;
li=0;
while(li<ls)
{
j=(li+ls)/2;
if(a[j]==v)
b[k]=v;
else
if(v>=a[j])
li+=1;
else
ls-=1;
}
}
}
for(int i=0; i<k; i++)
g<<b[k]<<endl;
return 0;
}