Pagini recente » Rating Anea Rares (AneaRares) | Cod sursa (job #389426) | Cod sursa (job #1524665) | Cod sursa (job #1507161) | Cod sursa (job #1018330)
#include<fstream>
using namespace std;
ifstream f ("cautbin.in");
ofstream g("cautbin.out");
int n,t,x,v[1000],y,i,m;
int cautare0 (int x, int st, int dr)
{
int i=st,j=dr;
if (i>j) return -1;
int m=(i+j)/2;
if (x==m) return m;
if (x>v[m]) return cautare0(x,m,j);
else return cautare0(x,i,m);
}
int cautare1 (int x,int st, int dr)
{
int i=st,j=dr;
if (i>j) return j;
int m=(i+j)/2;
if (x==m) return m;
if (x>v[m]) return cautare1(x,m+1,j);
else return cautare1(x,i,m-1);
}
int cautare2 (int x,int st, int dr)
{
int i=st,j=dr;
if (i>j) return i;
int m=(i+j)/2;
if (x==m) return m;
if (x>v[m]) return cautare2(x,m+1,j);
else return cautare2(x,i,m-1);
}
int main ()
{
f>>n;
for (i=1;i<=n;i++)
f>>v[i];
f>>m;
for (i=1;i<=m;i++)
{
f>>t>>x;
if (t==0) y=cautare0(x,1,n);
if (t==1) y=cautare1(x,1,n);
if (t==2) y=cautare2(x,1,n);
if (y!=-1)
{
if (t==0) {while (v[y]==x && v[y]==v[y+1]) y++; g<<y<<"\n";}
if (t==2) {while (v[y]<=x && v[y]==v[y-1]) y--; g<<y<<"\n";}
if (t==1) {while (v[y]>=x && v[y]==v[y+1]) y++; g<<y<<"\n";}
}
if (t==0 && y==-1) g<<y<<"\n";
}
f.close();
g.close();
return 0;
}