Pagini recente » Cod sursa (job #2770797) | Cod sursa (job #3162587) | Cod sursa (job #2032651) | Cod sursa (job #676260) | Cod sursa (job #1335460)
#include <iostream>
#include <fstream>
#define inFile "cautbin.in"
#define outFile "cautbin.out"
using namespace std;
int n, t, tip, nr, v[100001];
int c_fix(int begg, int endd)
{
int k;
while(begg <= endd){
k = (begg + endd) / 2;
if(v[k] > nr) endd = k - 1;
else begg = k + 1;
}
k = (begg + endd) / 2;
if(v[k] > nr) k--;
if(v[k] == nr)
return k;
return -1;
}
int c_less(int begg, int endd)
{
int k;
while(begg < endd){
k = (begg + endd) / 2;
if(v[k] > nr) endd = k;
else begg = k + 1;
}
k = (begg + endd) / 2;
if(v[k] > nr) k--;
return k;
}
int c_big(int begg, int endd)
{
int k;
while(begg < endd){
k = (begg + endd) / 2;
if(v[k] >= nr) endd = k;
else begg = k + 1;
}
k = (begg + endd) / 2;
if(v[k] < nr) k++;
return k;
}
void solve()
{
ifstream fin(inFile);
ofstream fout(outFile);
fin>>n;
for(int i = 1; i <= n; ++i) fin>>v[i];
fin>>t;
for(int k = 1; k <= t; ++k){
fin>>tip>>nr;
switch(tip){
case 0:fout<<c_fix(1,n)<<"\n"; break;
case 1:fout<<c_less(1,n)<<"\n"; break;
case 2:fout<<c_big(1,n)<<"\n"; break;
}
}
}
int main()
{
solve();
}