Cod sursa(job #2320547)

Utilizator ApostolIlieDanielApostol Daniel ApostolIlieDaniel Data 14 ianuarie 2019 21:22:59
Problema Semne Scor 85
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;

#define ll long long

const int MAXN = 5e4;

int a[MAXN + 1], sign[MAXN + 1];

int main() {
  int n, i;
  ll s, k;
  freopen ("semne.in", "r", stdin);
  freopen ("semne.out", "w", stdout);

  scanf ("%d%lld", &n, &k);

  s = 0;

  for (i = 1; i <= n; i++) {
    scanf ("%d", &a[i]);
    sign[i] = 1;
    s = s + a[i];
  }

  srand (NULL);

  while (k != s) {
    if (s < k) {
      do {
        i = 1 + rand () % n;
      } while (sign[i] == 1);
      s = s + 2 * a[i];
      sign[i] = 1;
    }
    else {
      do {
        i = 1 + rand () % n;
      } while (sign[i] == -1);
      s = s - 2 * a[i];
      sign[i] = -1;
    }
  }

  for (i = 1; i <= n; i++)
    printf ("%c", (sign[i] == 1) ? '+' : '-');

  return 0;
}