Cod sursa(job #783922)

Utilizator MtkMarianHagrSnaf MtkMarian Data 4 septembrie 2012 15:16:29
Problema Shop Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 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);
	
}


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)
	{
		for(int i=1;i<=v[ind].fs.sc;++i)
		{
			if((l-pow((long double) c,(long double) v[ind].fs.fs))>=0)
				{
					++nr[v[ind].sc];
					++cont;
					l=l-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;
}