Pagini recente » Cod sursa (job #1273491) | Cod sursa (job #2539966) | Cod sursa (job #183891) | Cod sursa (job #1682676) | Cod sursa (job #245893)
Cod sursa(job #245893)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int x,n,m,a,v[1000];
int f0(int x)
{
int low=1;
int high=n;
while(1)
{
int mid= (low+high)/2;
if (v[mid]==x) {while(v[mid+1]==x) mid++; return mid;}
if(v[mid]>x) high=mid;
else low=mid;
}
}
int f1(int x)
{
int low=1;
int high=n;
while(1)
{
if (high-low==1) return low;
int mid= (low+high)/2;
while(v[mid-1]==x) mid--;
if(v[mid]>=x) high=mid;
else low=mid;
}
}
int f2(int x)
{
int low=1;
int high=n;
while(1)
{
if (high-low==1) return high;
int mid= (low+high)/2;
while(v[mid+1]==x) mid++;
if(v[mid]>=x) high=mid;
else low=mid;}
}
int main()
{
f>>n;
for(int i=1;i<=n; f>>v[i++]);
f>>m;
for(int i=1;i<=m;i++)
{ f>>a>>x;
switch (a)
{ case 0: g<<f0(x)<<"\n";break;
case 1: g<<f1(x)<<"\n";break;
case 2: g<<f2(x)<<"\n";break;
}
}
f.close();
g.close();
return 0;
}