Pagini recente » Cod sursa (job #1904901) | Cod sursa (job #709111) | Cod sursa (job #787385) | Cod sursa (job #714706) | Cod sursa (job #307247)
Cod sursa(job #307247)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
long x,n,m,v[100001];
long search_0 (long x)
{ long lo,hi,mid;
for (lo=1, hi=n; lo<=hi; )
{ mid=lo+(hi-lo)/2; //puteam scrie mid=(hi+lo)/ dar hi+lo poate iesi din long
if (x<v[mid]) hi=mid-1;
else if (x>v[mid]) lo=mid+1;
else return mid;
}
return -1;
}
long search_1 (long x)
{ long lo,hi,mid;
for (lo=1, hi=n; lo<=hi; )
{ mid=lo+(hi-lo)/2;
if (v[mid]<=x) last=mid, lo=mid+1;
}
return last;
}
long search_2 (long x)
{ long lo,hi,mid;
for (lo=1, hi=n; lo<=hi; )
{ mid=lo+(hi-lo)/2;
if (v[mid]>=x) last=mid, lo=mid-1;
}
return last;
}
int main ()
{ f>>n;
for (int i=1; i<=n; i++)
f>>v[i];
f>>m;
for (int i=1; i<=; i++)
{ f>>c>>x;
switch (c)
{ case 0: g<<search_0 (x)<<'\n'; break;
case 1: g<<search_1 (x)<<'\n'; break;
case 2: g<<search_2 (x)<<'\n'; break;
}
}
f.close (); g.close ();
return 0;
}