Pagini recente » Cod sursa (job #467202) | Cod sursa (job #428014) | Cod sursa (job #3183572) | Cod sursa (job #2179954) | Cod sursa (job #345323)
Cod sursa(job #345323)
#include <fstream>
using namespace std;
int main()
{
ifstream f("cautbin.in");
ofstream f2("cautbin.out");
int n,v[100002];
f>>n;
for(int i=0;i<n;++i) f>>v[i];
int m,x,y;
f>>m;
while(f>>x>>y)
{
int st = 0, dr = n-1;
int mid;
while(st<=dr)
{
mid = st + (dr-st)/2;
if(v[mid]<y) st = mid+1;
else if(v[mid]>y) dr = mid-1;
else break;
}
mid = v[mid]==y ? mid : st;
switch(x)
{
case 0:
{
if(v[mid]!=y) f2<<"-1\n";
else
{
while(mid<n && v[mid++]==y);
f2<<(mid-2)+1<<"\n";
}
break;
}
case 1:
{
if(v[mid]!=y) ++mid;
else while(mid<n && v[mid++]==y);
f2<<(mid-2)+1<<"\n";
break;
}
case 2:
{
while(mid>0 && v[mid--]==y);
f2<<(++mid)+1<<"\n";
}
}
}
return 0;
}