Cod sursa(job #465796)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 25 iunie 2010 13:12:07
Problema Minim2 Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 1 Marime 1.01 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE*f=fopen("minim2.in","r");
FILE*g=fopen("minim2.out","w");
int i,n,nr,maxim;
float a,b,dist,dcurent,valmax;
struct minim{
	
	float val;
	
	float sc;

	
};

minim w[100005];

int cmp (minim a,minim b) {
	
	return a.sc > b.sc;
	
}



int main () {
	
	fscanf(f,"%d",&n);
	
	for ( i = 1 ; i <= n ; ++i ){
		
		fscanf(f,"%f",&w[i].val);
		
		dcurent += w[i].val ;
		
	}
	
	fscanf(f,"%f %f %f",&a,&b,&dist);
	a = 1 - a; b = 1 - b;
	for ( i = 1 ; i <= n ; ++i ){
		
		w[i].sc = w[i].val * a ; 
		
		
	}
	
	//sort(w+1,w+n+1,cmp);
	
	//front = 1;
	nr = 0;
	
	while ( dcurent >= dist ) {
		
		maxim = 0 ; valmax = 0 ;
		
		for ( i = 1 ; i <= n ; ++i ){
			
			if ( w[i].sc > valmax )
				valmax = w[i].sc, maxim = i ;
			
		}
		
		dcurent -= w[maxim].sc;
		w[maxim].val -= w[maxim].sc; 
		w[maxim].sc = w[maxim].val * b;
		
		
		++nr;
		
	}
	
	fprintf(g,"%d",nr);
	
	fclose(f);
	fclose(g);
	return 0;
}