Cod sursa(job #2060271)

Utilizator GabiTulbaGabi Tulba-Lecu GabiTulba Data 8 noiembrie 2017 00:47:48
Problema Semne Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>

#define MaxN 50005
#define MOD 666013
#define INF 2140000000

using namespace std;

FILE *IN,*OUT;

long long S=0,Q;
int v[MaxN],N;
bool sign[MaxN];
int main()
{
    IN=fopen("semne.in","r");
    OUT=fopen("semne.out","w");

    srand(time(NULL));

    fscanf(IN,"%d%lld",&N,&Q);

    for(int i=1;i<=N;i++)
        fscanf(IN,"%d",&v[i]);

    for(int i=1;i<=N;i++)
    {
        sign[i]=rand()&1;
        if(sign[i])
            S+=v[i];
        else S-=v[i];
    }

    while(S!=Q)
    {
        int pos=rand()%N+1;
        while(sign[pos]&&S<Q)
            pos=rand()%N+1;
        while(!sign[pos]&&S>Q)
            pos=rand()%N+1;
        if(sign[pos])
            S-=v[pos]<<1;
        else S+=v[pos]<<1;
        sign[pos]^=1;
    }

    for(int i=1;i<=N;i++)
    {
        if(sign[i])fprintf(OUT,"+");
        else fprintf(OUT,"-");
    }
    return 0;
}