Pagini recente » Cod sursa (job #429072) | Cod sursa (job #1687886) | Cod sursa (job #97384) | Cod sursa (job #1089473) | Cod sursa (job #3247827)
#include <iostream>
#include <fstream>
std::ifstream fin("cautbin.in");
std::ofstream fout("cautbin.out");
struct cerinte{
int index;
int nr;
};
int cerinta_0(int *sir, int nr, int n){
int dr = n, st = 1,i = 1;
int mij;
while(st<=dr){
mij = st + (dr - st)/2;
if(nr == sir[mij] && sir[mij+1] != nr)
return mij;
else if(nr >= sir[mij])
st = mij+1;
else
dr = mij - 1;
}
return -1;
}
int cerinta_1(int *sir, int nr, int n){
int dr = n, st = 1, i = 1;
int mij;
int max = 0;
for(int i = 1; i <= n; i++)
if(max < sir[i] && sir[i] <= nr)
max = sir[i];
if(nr < sir[n]){
while(st<=dr){
mij = st + (dr - st)/2;
if(max == sir[mij] && sir[mij+1] != max)
return mij;
if(max >= sir[mij])
st = mij + 1;
else
dr = mij -1;
}
}
}
int cerinta_2(int *sir, int nr, int n){
int dr = n, st = 1;
int mij, mim = 0;
for(int i=1; i<=n; i++)
if(sir[i] >= nr){
return i;
break;
}
}
int main()
{
int n,m,c;
fin >> n;
int sir[n+2];
for(int i=1; i<=n; i++){
fin>>sir[i];
}
fin>>m;
struct cerinte lista[m+1];
for(int i=1; i<=m; i++){
fin>>lista[i].index;
fin>>lista[i].nr;
if(lista[i].index == 0)
fout<<cerinta_0(sir, lista[i].nr, n)<<'\n';
if(lista[i].index == 1)
fout<<cerinta_1(sir, lista[i].nr, n)<<'\n';
if(lista[i].index == 2)
fout<<cerinta_2(sir, lista[i].nr, n)<<'\n';
}
return 0;
}