Pagini recente » Cod sursa (job #1080864) | Cod sursa (job #2461208) | Cod sursa (job #212786) | Cod sursa (job #1267274) | Cod sursa (job #701395)
Cod sursa(job #701395)
#include<fstream>
using namespace std;
int main()
{
int n,m,ns[100001],ms,i,s,d,v,mij,j,mam,maM;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
for(i=1;i<=n;i++)
f>>ns[i];
f>>m;
for(j=1;j<=m;j++)
{
f>>ms>>v;
s=1;
d=n;
if(ms==0)
{
while(s<=d)
{
mij=(d+s)/2;
if(v>ns[mij])
s=mij;
if(v<ns[mij])
d=mij;
if(v==ns[mij])
break;
}
if(v==ns[mij])
{
while(ns[mij]==v && mij<=n)
mij++;
g<<mij-1<<endl;
}
else
g<<-1<<endl;
}
if(ms==1)
{
while(s<=d)
{
mij=(d+s)/2;
if(v>ns[mij])
{
mam=mij;
s=mij;
}
if(v<ns[mij])
d=mij;
if(v==ns[mij])
break;
}
if(v==ns[mij])
{
while(ns[mij]==v && mij<=n)
mij++;
g<<mij-1<<endl;
}
else
g<<mam<<endl;
}
if(ms==2)
{
while(s<=d)
{
mij=(d+s)/2;
if(v>ns[mij])
s=mij;
if(v<ns[mij])
{
d=mij;
maM=mij;
}
if(v==ns[mij])
break;
}
if(v==ns[mij])
g<<mij-1<<endl;
else
g<<maM<<endl;
}
}
g.close();
f.close();
return 0;
}