Pagini recente » Cod sursa (job #2483979) | Istoria paginii runda/bulangandit10 | Atasamentele paginii Clasament rar32 | Monitorul de evaluare | Cod sursa (job #166699)
Cod sursa(job #166699)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<iostream.h>
#define NMAX 50003
long long n,S,i,suma; int semn[NMAX];
long long limA,limB;
struct mm {long long poz,val;} a[NMAX],b[NMAX],aux,nothing;
long long mutare(mm to[],mm from[],long long &lim_to,long long &lim_from,int sign)
{
i = rand()%lim_from+1; aux = from[ i ];
semn[ aux.poz ]=sign;
from[ i ] = from[ lim_from ];
from[ lim_from-- ] = nothing;
to[ ++lim_to ] = aux;
return aux.val;
}
int main()
{
freopen("semne.in","r",stdin);
freopen("semne.out","w",stdout);
scanf("%lld %lld",&n,&S); srand( time(0) );
for(i=1;i<=n;i++)
{ scanf("%lld",&a[i].val);
a[i].poz=i; suma+=a[i].val; semn[i]=1;}
limA=n;
while(suma!=S)
{
if(suma<S) suma+=( mutare(a,b,limA,limB,1)<<1 );
else suma-=( mutare(b,a,limB,limA,-1)<<1 );
}
for(i=1;i<=n;i++)
if(semn[i]==1) printf("+");
else printf("-");
printf("\n"); return 0; }