Pagini recente » Cod sursa (job #2349446) | Cod sursa (job #1455701) | Cod sursa (job #686402) | Cod sursa (job #333534) | Cod sursa (job #840804)
Cod sursa(job #840804)
#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)
if (v[mij]>x) g<<mij-1<<'\n';
else g<<mij<<'\n';
else {
while (poz+1<=n && v[poz+1]==x) poz++;
g<<poz<<'\n';
}
break;
case 2: if (!da)
if (v[mij]<x) g<<mij+1<<'\n';
else g<<mij<<'\n';
else {
while (poz-1>=1 && v[poz-1]==x) poz--;
g<<poz<<'\n';
}
break;
}
}
g.close();
return 0;
}