Pagini recente » Monitorul de evaluare | Cod sursa (job #2594425) | Cod sursa (job #1002735) | Cod sursa (job #400942) | Cod sursa (job #803529)
Cod sursa(job #803529)
#include<fstream>
#include<algorithm>
#include<ctime>
#include<cstdlib>
using namespace std;
bool c[50001];
int a[50001],b[50001],n,i,k,x;
long long s,sum;
int main()
{
ifstream f("semne.in");
ofstream g("semne.out");
srand(time(NULL));
f >> n >> s;
sum=0;x=n/2;
for (i=1;i<=n;i++)
{
f >> a[i];
s+=a[i];
if (i<=x)
sum+=a[i];
b[i]=i;
}
s/=2;
while (s!=sum)
{
if (s>sum)
{
x++;
k=rand()%(n-x+1)+x;
swap(a[k],a[x]);
swap(b[k],b[x]);
sum+=a[x];
}
else
{
k=rand()%x+1;
swap(a[k],a[x]);
swap(b[k],b[x]);
sum-=a[x];
x--;
}
}
for (i=1;i<=x;i++)
c[b[i]]=1;
for (i=1;i<=n;i++)
if (c[i]==0)
g << '-';
else g << '+';
return 0;
}