Cod sursa(job #783932)

Utilizator MtkMarianHagrSnaf MtkMarian Data 4 septembrie 2012 15:42:01
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<cstdio>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
#define mp make_pair
#define pb push_back
#define fs first
#define sc second

bool funct( pair < pair<int ,long long> ,int > x, pair < pair<int,long long> ,int > y)
{
	return (x.first.first>y.first.first);
	
}
inline  int min (int a,int b)
{
	return a<b ? a:b;
}

vector < pair < pair <int, long long> ,int > >  v;



int main()
{
	freopen("shop.in","r",stdin);
	freopen("shop.out","w",stdout);

	long long l,b;
	int nr[31]={0};
	int c,n,ind,cont=0,a;
	scanf("%d %d %lld",&n,&c,&l);
	

	for(int i=0;i<n;++i)
	{
		scanf("%d %lld",&a,&b);
		
		v.pb(mp( mp (a,b ),i) );
		
	}
	sort(v.begin(),v.end(),funct);


	ind=0;

	while(l&&ind<n)
	{
			nr[v[ind].sc]=min(v[ind].fs.sc,l/pow((double)c,(double)v[ind].fs.fs));
			cont+=nr[v[ind].sc];
			l-=nr[v[ind].sc]*pow((long double) c,(long double)v[ind].fs.fs);
		
		
			++ind;
	}
	
		
	printf("%d\n",cont);
	for(int i=0;i<n;++i)
	{
		printf("%d ",nr[i]);
	}
	
	return 0;
}