Cod sursa(job #1752)

Utilizator varuvasiTofan Vasile varuvasi Data 14 decembrie 2006 18:10:34
Problema Semne Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;

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

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