Pagini recente » Cod sursa (job #2552314) | Cod sursa (job #2424096) | Cod sursa (job #1910032) | Cod sursa (job #577860) | Cod sursa (job #2990849)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
void cerinta1(int v[],int n, int x) {
int maxim;
int poz;
int r=n;
int l=1;
while (l<=r) {
int m=(l+r)/2;
if (x==v[m]) {
poz=m;
if(maxim<poz) {
maxim=poz;
}
l=m+1;
}
if (v[m]>x) {
r=m-1;
}
if (v[m]<x) {
l=m+1;
}
}
if (maxim!=0) {
fout << maxim << '\n';
}
else
fout << -1 << '\n';
}
void cerinta2(int v[],int n, int x) {
int maxim;
int ct=0;
int poz;
int r=n;
int l=1;
while (l<=r) {
int m=(l+r)/2;
if (x==v[m]) {
poz=m;
if(maxim<poz) {
maxim=poz;
}
l=m+1;
}
if (v[m]>x) {
r=m-1;
}
if (v[m]<x) {
l=m+1;
}
}
fout << r << '\n';
}
void cerinta3(int v[],int n, int x) {
int maxim;
int ct=0;
int poz;
int r=n;
int l=1;
while (l<=r) {
int m=(l+r)/2;
if (x==v[m]) {
poz=m;
if(maxim<poz) {
maxim=poz;
}
r=m-1;
}
if (v[m]>x) {
r=m-1;
}
if (v[m]<x) {
l=m+1;
}
}
fout << l << '\n';
}
int main()
{
int n, nr, c, v[100001], poz=-1, x,maxim=0, m, M;
fin >> n;
for (int i=1; i<=n; ++i) {
fin >> nr;
v[i]=nr;
}
fin >> M;
for (int i=1; i<=M; ++i) {
fin >> c >> x;
if (c==0) {
cerinta1(v, n, x);
}
if (c==1) {
cerinta2(v, n, x);
}
if (c==2) {
cerinta3(v, n, x);
}
}
return 0;
}