Pagini recente » Monitorul de evaluare | Cod sursa (job #419026) | Cod sursa (job #1155980) | Cod sursa (job #733940) | Cod sursa (job #662606)
Cod sursa(job #662606)
#include<fstream>
#include<conio.h>
using namespace std;
int v[36000];
int varianta0(int st,int dr,int x)
{ int mij;
while(st<=dr)
{mij=(st+dr)/2;
if(v[mij]<=x)
st=mij+1;
else
dr=mij-1;
}
mij=(st+dr)/2;
if(v[mij]>x)
mij--;
if(v[mij]==x)
return mij;
else
return -1;
}
int varianta1(int st, int dr, int x)
{ int mij;
while(st<dr)
{mij=(st+dr)/2;
if(v[mij]<=x)
st=mij+1;
else
dr=mij;
}
mij=(st+dr)/2;
if(v[mij]>x)
mij--;
return mij;
}
int varianta2(int st, int dr, int x)
{ int mij;
while(st<dr)
{mij=(st+dr)/2;
if(v[mij]<x)
st=mij+1;
else
dr=mij;
}
mij=(st+dr)/2;
if(v[mij]<x)
mij++;
return mij;
}
int main()
{ int i,N, M, optiune, x;
fstream f,g;
f.open("cautbin.in",ios::in);
g.open("cautbin.out",ios::out);
f>>N;
for(i=1;i<=N;i++)
f>>v[i];
f>>M;
for(i=1;i<=M;i++)
{
f>>optiune>>x;
if(optiune==0) g<<varianta0(1,N,x)<<"\n";
if(optiune==1) g<<varianta1(1,N,x)<<"\n";
if(optiune==2) g<<varianta2(1,N,x)<<"\n";
}
f.close();
g.close();
return 0;
}