Pagini recente » Cod sursa (job #1924086) | Autentificare | Cod sursa (job #2686843) | Cod sursa (job #152879) | Cod sursa (job #801543)
Cod sursa(job #801543)
#include<fstream>
#include<ctime>
#include<cstdlib>
using namespace std;
int main()
{
long s,sol;
int n,a[50001],Plus[50001],Minus[50001],plusx,minusx,parte[50001],Randomz,i;
ifstream f("semne.in");
ofstream g("semne.out");
srand(time(NULL));
f>>n>>s;
plusx=minusx=0;
for(i=0;i<n;++i)
{
f>>a[i];
parte[i]=rand()%2;
if(parte[i])//Plus
{
Plus[plusx]=i;
plusx++;
sol+=a[i];
}
else //Minus
{
Minus[minusx]=i;
minusx++;
sol-=a[i];
}
}
f.close();
while(s!=sol)
{
if(sol<s)
{
plusx++;
Randomz=rand()%minusx+1;
Plus[plusx]=Minus[Randomz];
sol+=2*a[Plus[plusx]];
Minus[Randomz]=Minus[minusx];
minusx--;
parte[Plus[plusx]]=1;
}
else
{
minusx++;
Randomz=rand()%plusx+1;
Minus[minusx]=Plus[Randomz];
sol-=2*a[Minus[minusx]];
Plus[Randomz]=Plus[plusx];
plusx--;
parte[Minus[minusx]]=0;
}
}
for(i=0;i<n;++i)
if(parte[i])
g<<'+';
else g<<'-';
g.close();
return 0;
}