Pagini recente » Cod sursa (job #1044200) | Cod sursa (job #2020695) | Cod sursa (job #2723549) | Cod sursa (job #1940700) | Cod sursa (job #1942541)
#include <bits/stdc++.h>
#define pb push_back
#define NMAX 100050
#define ll long long
#define x first
#define y second
#define INF 0x3f3f3f3f
using namespace std;
typedef pair<int,int> pii;
ifstream fin("semne.in");
ofstream fout("semne.out");
ll v[NMAX];
int Plus[NMAX],Minus[NMAX];
char semn[NMAX];
int main() {
int n,p=0,m=0,i,pos;
ll s,sact=0;
fin>>n>>s;
srand(time(0));
for(i=1;i<=n;++i) {
fin>>v[i];
sact+=v[i];
Plus[p++]=i;
semn[i]='+';
}
while(sact!=s) {
if(sact<s) {
pos=rand()%m;
semn[Minus[pos]]='+';
sact+=2*v[Minus[pos]];
Plus[++p]=Minus[pos];
Minus[pos]=Minus[m];
--m;
}
if(sact>s) {
pos=rand()%p;
semn[Plus[pos]]='-';
sact-=2*v[Plus[pos]];
Minus[++m]=Plus[pos];
Plus[pos]=Plus[p];
--p;
}
}
fout<<(semn+1);
return 0;
}