Pagini recente » Cod sursa (job #438886) | Cod sursa (job #2281207) | Cod sursa (job #2904728) | Cod sursa (job #2475480) | Cod sursa (job #662809)
Cod sursa(job #662809)
#include<fstream>
#define max 100008
using namespace std;
int i,x,y,n,m,v[max];
ifstream f("cautbin.in");
ofstream g("cautbin.out");
ofstream h("afisare.out");
int caz_0(int x)
{int m,l,r;
l=1;
r=n;
while (l!=r)
{m=(l+r+1)/2;
if(x>=v[m])
l=m;
else
r=m-1;}
if(x!=v[l])
return -1;
return l;
}
int caz_1(int x)
{int m,l,r;
l=1;
r=n;
while(l!=r)
{m=(l+r)/2;
if(x<=v[m])
r=m;
else
l=m+1;}
if(v[l]>x)
return l-1;
return l;
}
int caz_2(int x)
{int m,l,r;
l=1;
r=n;
while(l!=r)
{m=(l+r)/2;
if(x<=v[m])
r=m;
else
l=m+1;}
if(v[l]<x)
return l+1;
return l;
}
void cazuri()
{for(i=1;i<=m;i++)
{f>>x>>y;
if(x==0)
g<<caz_0(y);
if(x==1)
g<<caz_1(y);
if(x==2)
g<<caz_2(y);
g<<"\n";}
}
void citire()
{f>>n;
for(i=1;i<=n;i++)
f>>v[i];
f>>m;
}
void afisare()
{for(i=1;i<=n;i++)
h<<v[i]<<"\n";
h.close();
}
int main ()
{citire();
cazuri();
afisare();
f.close ();
g.close ();
return 0;
}