Pagini recente » Cod sursa (job #1162824) | Cod sursa (job #1790754) | Cod sursa (job #667376) | Cod sursa (job #341615) | Cod sursa (job #2436379)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
vector <int> A;
int N,x,o,q;
int binSearch(int left,int right,int value)
{
if(left>right) return -1;
int middle=left+(right-left)/2;
if(value==A[middle]) return middle;
if(value>A[middle]) return binSearch(middle+1,right,value);
else return binSearch(left,middle-1,value);
}
void solveQuery(int o,int x)
{
int pos=binSearch(0,A.size()-1,x);
int dp=pos;
switch(o)
{
case 0: dp++; while(A[dp]==A[pos]) dp++; fout<<dp; break;
case 1: dp--; while(A[dp]==A[pos]) dp--; fout<<dp+1; break;
case 2: dp++; while(A[dp]==A[pos]) dp++; fout<<dp+1; break;
}
fout<<'\n';
}
void read()
{
fin>>N;
for(int i=0;i<N;i++)
{
fin>>x;
A.push_back(x);
}
fin>>q;
for(int i=0;i<q;i++)
{
fin>>o>>x;
solveQuery(o,x);
}
}
int main()
{
read();
return 0;
}