Cod sursa(job #783087)

Utilizator MtkMarianHagrSnaf MtkMarian Data 2 septembrie 2012 09:36:42
Problema Shop Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 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<long long,long long> x,pair<long long,long long> y)
{
	 return(x.first<y.first);
	
}


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

int main()
{
	freopen("shop.in","r",stdin);
	freopen("shop.out","w",stdout);
	long long l,b[31],a[31],nr[31]={0};
	int c,n,ind,cont=0;
	scanf("%d %d %lld",&n,&c,&l);
	//printf("%d %d %lld\n",n,c,l);

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

	for(int i=0;i<n;++i)
	{
		
		printf("%lld %lld\n",v[i].fs,v[i].sc);
	}
	ind=n-1;

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