Pagini recente » Cod sursa (job #2091421) | Cod sursa (job #243729) | Cod sursa (job #2043892) | Cod sursa (job #169993) | Cod sursa (job #840813)
Cod sursa(job #840813)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n, m, poz, x, a, da, p, u, mij;
int v[100001];
int main(){
f>>n;
for (int i=1;i<=n;++i) f>>v[i];
f>>m;
for (int i=1;i<=m;++i){
f>>a>>x;
p=1; u=n;
da=0;
while (p<=u && da==0){
mij=(p+u)/2;
if (v[mij]==x) da=1;
else
if (v[mij]<x) u=mij-1;
else p=mij+1;
}
poz=mij;
switch (a){
case 0: if (!da) g<<"-1\n";
else {
while (poz+1<=n && v[poz+1]==x) poz++;
g<<poz<<'\n';
}
break;
case 1: if (!da){
while (v[mij]>x) mij--;
g<<mij<<'\n';
}
else {
while (poz+1<=n && v[poz+1]==x) poz++;
g<<poz<<'\n';
}
break;
case 2: if (!da){
while (v[mij]<x) mij++;
g<<mij<<'\n';
}
else {
while (poz-1>=1 && v[poz-1]==x) poz--;
g<<poz<<'\n';
}
break;
}
}
g.close();
return 0;
}