Pagini recente » Cod sursa (job #414207) | Cod sursa (job #2554500) | Cod sursa (job #1078598) | Cod sursa (job #3179723) | Cod sursa (job #578586)
Cod sursa(job #578586)
#include<fstream>
#include<iostream>
using namespace std;
int n,m,sir[100001],k=0;
ifstream f1("cautbin.in");
ofstream f2("cautbin.out");
void caut(int gen,int nr)
{int stanga,dreapta,mij,ok=1;
stanga=1;
dreapta=n;
k++;
while(stanga<dreapta)
{mij=(stanga+dreapta)/2;
if(sir[mij]>nr) dreapta=mij-1;
else stanga=mij+1;
}
if(!gen)
{while(ok)
{if(sir[mij+1]==nr) mij++;
else ok=0;
}
}
else if(gen==1)
{while(ok)
if(sir[mij+1]>sir[mij]) break;
else m++;
}
else
while(ok)
{if(sir[mij-1]<sir[mij]) break;
else mij--;
}
f2<<mij<<'\n';
}
void citire()
{f1>>n;
for(int i=1;i<=n;++i)
f1>>sir[i];
f1>>m;
}
int main()
{int gen,nr;
citire();
for(int i=1;i<=m;i++)
{f1>>gen>>nr;
caut(gen,nr);
}
return 0;
}