Cod sursa(job #1518760)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 6 noiembrie 2015 13:35:17
Problema Semne Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>

#define MAX_N 50000

int v[MAX_N], n;
char sign[MAX_N + 1];
long long target;

long long current;
bool flag;

void bkt(int indx) {
  if (current != target) {
    int i = indx;
    while (i < n && !flag) {
      sign[i] = '+';
      current += 2 * v[i];
      if (current <= target) {
        bkt(i + 1);
      }
      if (!flag) {
        sign[i] = '-';
        current -= 2 * v[i];
        i++;
      }
    }
  } else {
    flag = 1;
  }
}

int main(void) {
  int i;
  FILE *f = fopen("semne.in", "r");
  fscanf(f, "%d%lld", &n, &target);
  current = 0LL;
  for (i = 0; i < n; i++) {
    fscanf(f, "%d", &v[i]);
    current -= v[i];
    sign[i] = '-';
  }
  fclose(f);

  bkt(0);

  f = fopen("semne.out", "w");
  sign[n] = '\0';
  fputs(sign, f);
  fclose(f);
  return 0;
}