Cod sursa(job #1518762)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 6 noiembrie 2015 13:39:56
Problema Semne Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <algorithm>

#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 >= 0 && !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(n - 1);

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