Pagini recente » Cod sursa (job #1465089) | Cod sursa (job #877852) | Cod sursa (job #1757913) | Cod sursa (job #2471151) | Cod sursa (job #1832261)
#include <iostream>
/*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 */
#include <fstream>
using namespace std;
ifstream f("nush.in");
ofstream g("nush.out");
int main()
{
int n, m, v[100], i, c, maxx, p, st, dr,x,mi;
f>>n;
for(i=1; i<=n; i++)
f>>v[i];
f>>m;
for(i=1; i<=m; i++)
{
f>>p>>x;
if(p==0) {
maxx=0;
st=1;
dr=n;
while(st<=dr)
{
mi=(st+dr)/2;
if(v[mi]==x) {maxx=mi;
st=mi+1; }
else if(v[mi]>x) dr=mi-1;
else st=mi+1;
}
if(maxx!=0) g<<maxx<<endl;
else g<<-1<<endl;
}
else if(p==1)
{
maxx=0;
st=1;
dr=n;
while(st<=dr)
{
mi=(st+dr)/2;
if(v[mi]<=x) {maxx=mi;
st=mi+1; }
else dr=mi-1;
}
if(maxx!=0) g<<maxx<<endl;
else g<<-1<<endl;
}
else {
maxx=0;
st=1;
dr=n;
while(st<=dr)
{
mi=(st+dr)/2;
if(v[mi]>=x) {maxx=mi;
dr=mi-1; }
else st=mi+1;
}
if(maxx!=0) g<<maxx<<endl;
else g<<-1<<endl;
}
}
return 0;
}