Pagini recente » Cod sursa (job #590368) | Cod sursa (job #1351309) | Cod sursa (job #477452) | Cod sursa (job #221205) | Cod sursa (job #927162)
Cod sursa(job #927162)
#include<iostream>
#include<fstream>
using namespace std;
struct cell{
int x, a, b;
};
int bins(cell v[], int n, int s);
int main(){
int n,k=0;
ifstream cinr("cautbin.in");
cinr >> n;
cell vec[n+1]; vec[0].x=-1;
for(int i=1; i<=n; i++){
int y; cinr >> y;
if(y==vec[k].x) vec[k].b++;
else {
k++;
vec[k].x=y;
vec[k].a=i;
vec[k].b=i;
}
}
ofstream cour("cautbin.out");
int m; cinr >> m;
for(int i=1; i<=m; i++){
int p,x,y; cinr >> y >> x;
p=bins(vec,k,x);
if(y==0){
if(vec[p].x!=x) cour << "-1";
else cour << vec[p].b;
}
if(y==1){
if(vec[p].x>x) p--;
cour << vec[p].b;
}
if(y==2){
if(vec[p].x<x) p--;
cour << vec[p].a;
}
cour << "\n";
}
}
int bins(cell v[], int n, int s){
int fir=1, las=n;
while(fir!=las){
int p=(fir+las)/2;
if(v[p].x==s) return(p);
if(v[p].x>s) las=p-1;
else fir=p+1;
}
return(fir);
}