Pagini recente » Cod sursa (job #2249271) | Cod sursa (job #2854361) | Cod sursa (job #2183517) | Cod sursa (job #1266483) | Cod sursa (job #2231490)
#include <fstream>
#define nmax 100000
using namespace std;
int main()
{
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,m,i,v[nmax+1],tip,val,pas,k;
fin>>n;
for(i=1;i<=n;i++) {
fin>>v[i];
}
fin>>m;
for(i=1;i<=m;i++) {
fin>>tip>>val;
pas=1;
while(pas<=n) pas<<=1;
pas>>=1;
k=0;
switch(tip) {
case 0:
while(pas) {
if(k+pas<n && v[k+pas]<=val) k+=pas;
pas>>=1;
}
if(v[k]==val) fout<<(k+1)<<endl;
else fout<<"-1"<<endl;
break;
case 1:
while(pas) {
if(k+pas<n && v[k+pas]<=val) k+=pas;
pas>>=1;
}
fout<<(k+1)<<endl;
break;
case 2:
while(pas) {
if(k+pas<n && v[k+pas]<val) k+=pas;
pas>>=1;
}
if(k==0 && v[0]>=val) fout<<"1"<<endl;
else fout<<(k+2)<<endl;
break;
}
}
return 0;
}