Cod sursa(job #418777)

Utilizator vladiiIonescu Vlad vladii Data 16 martie 2010 13:32:24
Problema Semne Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <ctime>
using namespace std;

int N, A[50001];
bool Sgn[50001];
long long S, sc;

int main() {
    srand(time(NULL));
    FILE *f1=fopen("semne.in", "r"), *f2=fopen("semne.out", "w");
    int i, j, p, q;
    fscanf(f1, "%d%lld", &N, &S);
    for(i=1; i<=N; i++) {
         fscanf(f1, "%d", &A[i]);
         if(sc<=S) { sc+=A[i]; Sgn[i]=1; }
         else { sc-=A[i]; Sgn[i]=0; }
    }
    while(sc!=S) {
         if(sc<S) {
              p=rand()%N+1;
              if(!Sgn[p]) { Sgn[p]=1; sc+=2*A[p]; }
         }
         else {
              p=rand()%N+1;
              if(Sgn[p]) { Sgn[p]=0; sc-=2*A[p]; }
         }
    }
    for(i=1; i<=N; i++) {
         if(Sgn[i]) { fprintf(f2, "+"); continue; }
         fprintf(f2, "-");
    }
    fclose(f1); fclose(f2);
    return 0;
}