Cod sursa(job #3362344)
| Utilizator | Data | 6 august 2026 18:39:53 | |
|---|---|---|---|
| Problema | Cautare binara | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 1.56 kb |
#include <fstream>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int v[100000];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>v[i];
int m;
cin>>m;
for(int i=0;i<m;i++)
{
int x,c;
cin>>c>>x;
if(c==0)
{
int s=0,d=n-1,mid;
while(s<=d)
{
mid=(s+d)/2;
if(v[mid]==x)
break;
if(v[mid]>x)
d=mid-1;
else s=mid+1;
}
if(v[mid]==x)
{
mid++;
while(v[mid]==x)
mid++;
cout<<mid;
}
else cout<<-1;
cout<<'\n';
}
if(c==1)
{
int s=0,d=n-1,ans=-1,mid;
while(s<=d)
{
mid=s+(d-s)/2;
if(v[mid]<=x)
{
ans=mid;
s=mid+1;
}
else d=mid-1;
}
cout<<ans+1<<'\n';
}
if(c==2)
{
int s=0,d=n-1,ans=-1,mid;
while(s<=d)
{
mid=s+(d-s)/2;
if(v[mid]>=x)
{
ans=mid;
d=mid-1;
}
else s=mid+1;
}
cout<<ans+1<<'\n';
}
}
return 0;
}
