Cod sursa(job #873295)

Utilizator superman_01Avramescu Cristian superman_01 Data 7 februarie 2013 00:55:30
Problema Shop Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<cstdio>
#include<algorithm>
#include<math.h>
#include<fstream>

#define MAX_N 150

FILE *f=fopen("shop.in","r");


using namespace std;

ofstream g("shop.out");

long long int v[MAX_N],n,l,c,v1[MAX_N],ind[MAX_N],used[MAX_N],number;

long long cmp(long long  i,long long j)
{
	return v[i]>v[j];	
}


inline void solve( void )
{
	sort(ind+1,ind+n+1,cmp);
	
	for(long long index(1); index <= n ;  ++index)
	{
		if(l==0)
			break;
		while( v1[ind[index]] && l >= pow(c,v[ind[index]])  )
		{
			l-=pow( c , v[ind[index]] );
			used[ind[index]]++;
			number++;
			v1[ind[index]]--;
		}
		
		
	}
	
	
}



inline void write( void )
{
	g<<number<<"\n";
	for(int i(1); i <= n ; ++i)
		g<<used[i]<<" ";
	
	
}

int main( void )
{
	
	
	fscanf(f,"%I64d %I64d %I64d", &n, &c, &l);
	for( long long index(1); index <=  n ; ++index)
		{
			fscanf(f,"%I64d %I64d",&v[index],&v1[index]);
			ind[index]=index;
		}
	solve();
	write();
	return 0;
}