Pagini recente » Cod sursa (job #301529) | Cod sursa (job #2792586) | Cod sursa (job #2349223) | Cod sursa (job #214463) | Cod sursa (job #651677)
Cod sursa(job #651677)
#include<fstream>
#define maxn 100001
using namespace std;
int n, v[maxn], m, x, j, choice;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int c0(int v[], int value, int low, int high)
{int mid;
while(low<=high)
{mid=low+(high-low)/2;
if(v[mid]==value)
if(v[mid+1]!=value)
return mid;
if(v[mid]>value)
high=mid-1;
else low=mid+1;
}
return -1;
}
int c1(int v[], int value, int low, int high)
{int mid;
while(low<=high)
{mid=low+(high-low)/2;
if(v[mid]<=value)
{if(v[mid+1]>value && mid+1<=high)
return mid;
if(mid+1>high)
return mid;
}
if(v[mid]>value)
high=mid-1;
else low=mid+1;
}
}
int c2(int v[], int value, int low, int high)
{int mid;
while(low<=high)
{mid=low+(high-low)/2;
if(v[mid]>=value)
{if(v[mid-1]<value && mid-1>=low)
return mid;
if(mid-1<low)
return mid;
}
if(v[mid]<value)
low=mid+1;
else high=mid-1;
}
}
int main()
{f>>n;
for(j=1; j<=n; j++)
f>>v[j];
f>>m;
for(j=1; j<=m; j++)
{f>>choice;
f>>x;
switch(choice)
{case 0: g<<c0(v, x, 1, n)<<endl;
break;
case 1: g<<c1(v, x, 1, n)<<endl;
break;
case 2: g<<c2(v, x, 1, n)<<endl;
break;
}
}
f.close();
g.close();
return 0;
}