Cod sursa(job #1866088)
Utilizator | Data | 2 februarie 2017 17:14:40 | |
---|---|---|---|
Problema | Semne | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.68 kb |
#include <fstream>
#include <bitset>
#include <stdlib.h>
using namespace std;
#define Nmax 50002
ifstream fin("semne.in");
ofstream fout("semne.out");
int N, v[Nmax];
long long S,Now;
char s[Nmax];
void bkt(int poz)
{
if(Now!=S){
int i=poz;
while(i>0){
s[i]='-';
Now-=2*v[i];
if(Now>=S)
bkt(i-1);
s[i]='+';
Now+=2*v[i];
i--;
}
}
else{
fout << s+1;
exit(EXIT_SUCCESS);
}
}
int main()
{
fin >> N >> S;
for(int i=1;i<=N;++i){
fin >> v[i];
s[i]='+';
Now+=v[i];
}
bkt(N);
End:
return 0;
}