Pagini recente » Cod sursa (job #1444213) | Statistici Pop Marius Gabriel (vexxato) | Cod sursa (job #1007154) | Cod sursa (job #1885776) | Cod sursa (job #1942521)
#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(NULL));
for(i=1;i<=n;++i) {
fin>>v[i];
pos=rand()%2;
if(pos) {
sact-=v[i];
Minus[m++]=i;
semn[i]='-';
}
else {
sact+=v[i];
Plus[p++]=i;
semn[i]='+';
}
}
while(sact!=s) {
if(sact<s) {
pos=rand()%m;
semn[Minus[pos]]='+';
sact=sact+2*v[Minus[pos]];
Plus[++p]=Minus[pos];
Minus[pos]=Minus[m];
--m;
}
if(sact>s) {
pos=rand()%p;
semn[Plus[pos]]='-';
sact=sact-2*v[Plus[pos]];
Minus[++m]=Plus[pos];
Plus[pos]=Plus[p];
--p;
}
}
fout<<(semn+1);
return 0;
}