Cod sursa(job #2822878)

Utilizator loraclorac lorac lorac Data 26 decembrie 2021 10:56:16
Problema Semne Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("semne.in");
ofstream out("semne.out");
typedef long long ll;
const ll lim=5e4+5;
char s[lim];
ll dp[lim];
ll v[lim];
ll n,sum;
void solve(ll ind,ll curr)
{
    if(ind==0)
    {
        if(curr==sum)
        {
            for(ll i=1;i<=n;++i)
                out<<s[i];
            out<<'\n';
            exit(EXIT_SUCCESS);
        }
        return ;
    }
    s[ind]='-';
    curr+=v[ind];
    if(curr<=sum and sum<=curr+dp[ind-1])
        solve(ind-1,curr);
    curr-=v[ind];
    s[ind]='+';
    if(curr<=sum and sum<=curr+dp[ind-1])
        solve(ind-1,curr);
}
int main()
{
    ios_base::sync_with_stdio(false);
    in.tie(0),out.tie(0);
    in>>n>>sum;
    for(ll i=1;i<=n;++i)
        in>>v[i],
        dp[i]=dp[i-1]+v[i];
    sum=(dp[n]-sum)/2;
    solve(n,0);
    return 0;
}