Cod sursa(job #1847)

Utilizator varuvasiTofan Vasile varuvasi Data 14 decembrie 2006 23:33:04
Problema Semne Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>

long long S, sum;
int N;
char semn[50001];
int A[50001];

int main()
{
    freopen("semne.in", "rt", stdin);
    freopen("semne.out", "wt", stdout);
//    FILE *fin = fopen("semne.in", "rt");
//    FILE *fout = fopen("semne.out", "wt");
    int i = 0, v;
    srand( (unsigned)time(0) );
    scanf("%d %lld", &N, &S);
    for (i = 1; i <= N; i++)
    {
        scanf("%d", &A[i]);
        //if (v == 0) sum += A[i];
        //else sum -= A[i], semn[i] = 1;
        if (i < N/2)
                sum += A[i], semn[i-1] = '+';
        else sum -= A[i], semn[i-1] = '-';
    }
//    fclose(fin);
    while (S != sum)
    {
        if (S < sum) 
        { 
            v = (rand() % N) + 1;
            while (semn[v-1] == '-')
                v = (rand() % N) + 1; 
            semn[v-1] = '-';
            sum -= 2*A[v];
        }
        if (S > sum)
        {
            v = (rand() % N) + 1;
            while (semn[v-1] == '+')
                v = (rand() % N) + 1;
            semn[v-1] = '+';
            sum += 2*A[v];
        }
    }
    
    printf("%s", semn);
//   fclose(fout);
    
    return 0;
}