Cod sursa(job #1774848)

Utilizator borscalinCalin-Stefan Georgescu borscalin Data 9 octombrie 2016 15:21:38
Problema Schi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#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;
}