Cod sursa(job #2404810)

Utilizator NeredesinI am not real Neredesin Data 13 aprilie 2019 13:55:13
Problema Semne Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("semne.in");
ofstream out("semne.out");

const int NMAX = 5 * 1e4 + 1e2;

long long n, sum, nr;
long long v[NMAX];

char signp1[NMAX];

bool ok;

void compute_vals(int poz) {

  if(sum != nr) {
    while(poz > 0 && !ok) {
      signp1[poz] = '-';

      nr -= v[poz] * 2;

      if(nr >= sum)
        compute_vals(poz - 1);

      if(!ok) {
        signp1[poz] = '+';
        nr += v[poz]*2;

        poz--;
      }
    }
  } else {
    ok = 1;
  }
}
int main()
{
  in >> n >> sum;

  for(int i = 1; i <= n; i++) {
    in >> v[i];

    nr += v[i];
    signp1[i] = '+';
  }

  compute_vals(n);

  for(int i = 1; i <= n; i++)
    out << (char)signp1[i];

  in.close();
  out.close();

  return 0;
}