Cod sursa(job #1208597)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 16 iulie 2014 10:22:14
Problema Shop Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<iostream>
#include<fstream>
using namespace std;

#define NMAX 31

struct moneda {
	int a,b,poz;
	bool operator < (const moneda &c) const {
		return a<c.a;
	}
};

moneda v[31];
long long sol[NMAX];

long long putere(int x, int n)
{
	if(n==0)
		return 1;
	if(n%2==0) {
		long long aux = putere(x,n/2);
		return 1LL*aux*aux;
	}
	else return 1LL*x*putere(x,n-1);
}

int main ()
{
	int n,i,c;
	long long l,val,nr,cnt;
	ifstream f("shop.in");
	ofstream g("shop.out");
	f>>n>>c>>l;
	for(i=1;i<=n;i++) {
		f>>v[i].a>>v[i].b;
		v[i].poz=i;
	}
	f.close();
	sort(v+1,v+n+1);
	cnt=0;
	for(i=n;i>=1 && l>=1;i--) {
		val=putere(c,v[i].a);
		nr=1LL*l/val;
		if(nr>v[i].b)
			nr=v[i].b;
		l=0LL+l-1LL*nr*val;
		cnt=0LL+cnt+nr;
		sol[v[i].poz]=nr;
	}
	g<<cnt<<'\n';
	for(i=1;i<=n;i++)
		g<<sol[i]<<" ";
	g.close();
	return 0;
}