Pagini recente » Cod sursa (job #393378) | Cod sursa (job #416166) | Cod sursa (job #2624055) | Cod sursa (job #243673) | Cod sursa (job #701376)
Cod sursa(job #701376)
#include<fstream>
using namespace std;
int main()
{
int n,m,ns[100001],ms[100001],i,s,d,v[100001],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(i=1;i<=m;i++)
f>>ms[i]>>v[i];
for(j=1;j<=m;j++)
{
s=1;
d=n;
if(ms[j]==0)
{
while(s<=d)
{
mij=(d+s)/2;
if(v[j]>ns[mij])
s=mij;
if(v[j]<ns[mij])
d=mij;
if(v[j]==ns[mij])
break;
}
if(v[j]==ns[mij])
{
while(ns[mij]==v[j] && mij<=n)
mij++;
g<<mij-1<<endl;
}
else
g<<-1<<endl;
}
if(ms[j]==1)
{
while(s<=d)
{
mij=(d+s)/2;
if(v[j]>ns[mij])
{
mam=mij;
s=mij;
}
if(v[j]<ns[mij])
d=mij;
if(v[j]==ns[mij])
break;
}
if(v[j]==ns[mij])
{
while(ns[mij]==v[j] && mij<=n)
mij++;
g<<mij-1<<endl;
}
else
g<<mam<<endl;
}
if(ms[j]==2)
{
while(s<=d)
{
mij=(d+s)/2;
if(v[j]>ns[mij])
s=mij;
if(v[j]<ns[mij])
{
d=mij;
maM=mij;
}
if(v[j]==ns[mij])
break;
}
if(v[j]==ns[mij])
g<<mij-1<<endl;
else
g<<maM<<endl;
}
}
g.close();
f.close();
return 0;
}