Pagini recente » Cod sursa (job #788689) | Cod sursa (job #1059895) | Cod sursa (job #728086) | Cod sursa (job #1864615) | Cod sursa (job #443565)
Cod sursa(job #443565)
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[100001];
int main()
{
int n,i,j,x,mij,cod,ok,m;
f>>n;
for(i=1; i<=n; i++)
f>>v[i];
f>>m;
while(m--){
f>>cod>>x;
i=1;
j=n;
ok=0;
while(!ok && i<=j){
mij=(i+j)/2;
if(v[mij]==x)
ok=1;
else
if(x>v[mij])
i=mij+1;
else
j=mij-1;
}
switch(cod){
case 0: if(ok){
j=mij;
while(v[j+1]==x && j<n)
j++;
g<<j<<"\n";
}
else
g<<"-1\n";
break;
case 1: if(ok){
j=mij;
while(v[j+1]==x && j<n)
j++;
g<<j<<"\n";
}
else{
if(v[mij]>x)
mij--;
g<<mij<<"\n";
}
break;
case 2: if(ok){
i=mij;
while(v[i-1]==x && i>1)
i--;
g<<i<<"\n";
}
else{
if(v[mij]<x)
mij++;
g<<mij<<"\n";
}
}
}
return 0;
}