Pagini recente » Cod sursa (job #3137746) | Cod sursa (job #2011643) | Cod sursa (job #341755) | Cod sursa (job #2306918) | Cod sursa (job #1774848)
#include <cstdio>
using namespace std;
int n;
int v[100000], timp[100000];
inline int bs(int nr){
int st, dr;
int mijloc;
st=0;
dr=n-1;
while (st <= dr){
mijloc = (st + dr) / 2;
if (nr == v[mijloc])
return mijloc;
else if (nr < v[mijloc])
dr = mijloc - 1;
else
st = mijloc + 1;
}
return -1;
}
int main(){
FILE *fin, *fout;
int i, a, x, val, k;
fin = fopen( "schi.in", "r" );
fscanf( fin, "%d%d", &n, &a);
v[0] = a;
timp[0] = 1;
x = 1;
for ( i = 1; i < n; i++ ){
fscanf( fin, "%d", &a);
if (a > v[x-1]){
v[x] = a;
timp[x] = 1;
x++;
}
else
timp[x-1]++;
}
fscanf( fin, "%d", &k);
fout = fopen( "schi.out", "w" );
n = x;
for ( i = 0; i < k; i++ ){
fscanf( fin, "%d", &a);
val = bs( a );
if (val == -1)
fprintf( fout, "0 ");
else
fprintf( fout, "%d ", timp[val]);
}
fclose( fin );
fclose( fout );
return 0;
}