Cod sursa(job #1428292)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 4 mai 2015 00:16:50
Problema Statistici de ordine Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <stdio.h>

#define MAX_N 3000000

int v[MAX_N];
int n, k;

inline int countLower(int a) {
  int cnt = 0;
  int i = 0;
  
  while ((i < n) && (cnt < k)) {
    cnt = cnt + (v[i] <= a);
    i++;
  }
  return (cnt < k);
}
int main(void) {
  FILE *f = fopen("sdo.in", "r");
  int step, pos;
  
  fscanf(f, "%d%d", &n, &k);
  for (int i = 0; i < n; i++) {
    fscanf(f, "%d", &v[i]);
  }
  fclose(f);
  step = (1 << 29);
  pos = 0;
  while (step) {
    pos = pos + (step & (-countLower(pos + step)));
    step = (step >> 1);
  }
  f = fopen("sdo.out", "w");
  fprintf(f, "%d\n", pos + 1);
  fclose(f);
  return 0;
}