Cod sursa(job #341303)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 17 august 2009 23:56:23
Problema Semne Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream.h>
#include <fstream.h>
#include<stdio.h>    
#include<stdlib.h>   
#define Max 50103 

ifstream f("semne.in");
ofstream g("semne.out");
long long s,suma,a[Max],n,minus[Max], plus[Max],p,k;   
char u[Max];   

void read()   
    {   
    f>>n>>s; 
    for(int i=1;i<=n;++i)   
        {   
        f>>a[i];  
        if(suma+a[i]<=s) u[i]='+',suma+=a[i],plus[++p]=i;   
        else suma-=a[i], u[i]='-',minus[++k]=i;   
        }   
    f.close();
    }   
int main()   
{  
    read();   
    int i;   
    int x;   
    srand(time(0));   
    while(suma!=s)   
        {   
        if(suma<s)   
            {   
            x=rand()%k+1;   
            suma+=2*a[minus[x]];   
            plus[++p]=minus[x];   
            u[minus[x]]='+';   
            minus[x]=minus[k];   
            k--;   
            }   
        else   
            {   
            x=rand()%p+1;   
            suma-=2*a[plus[x]];   
            minus[++k]=plus[x];   
            u[plus[x]]='-';   
            plus[x]=plus[p];   
            --p;   
            }   
        }   
    for(i=1;i<=n;++i) g<<u[i];   
    return 0;   
}