Cod sursa(job #545861)

Utilizator nautilusCohal Alexandru nautilus Data 4 martie 2011 00:04:48
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<fstream>
#define dmax 100
using namespace std;

typedef struct moneda
{
 int a,s;
 long long b;
} moneda;

moneda mon[dmax];
int n,c;
long long l;
int nrm,sol[dmax];


void citire()
{
 int i;
	
 ifstream fin("shop.in");
 
 fin>>n>>c>>l;
 for (i=1; i<=n; i++)
	 {
	  fin>>mon[i].a>>mon[i].b;
	  mon[i].s = i;
	 }
	
 fin.close();
}


long long puterea(int x)
{
 int i;
 long long p=1;
 
 for (i=1; i<=x; i++)
	 p *= c;
 
 return p;
}


void solve()
{
 int i; 
 long long cc=1;
 
 for (i=1; i<=n && l!=0; i++)
	 {
	  cc = puterea(mon[i].a);
		 
	  sol[mon[i].s] = min(l / cc, mon[i].b);
	  nrm += sol[mon[i].s];
	  l -= sol[mon[i].s] * cc;
	 }
}


bool comp(moneda x, moneda y)
{
 return x.a > y.a;
}


void afisare()
{
 int i;
	
 ofstream fout("shop.out");
 
 fout<<nrm<<'\n';
 for (i=1; i<=n; i++)
	 fout<<sol[i]<<" ";
 
 fout.close();
}


int main()
{
	
 citire();
 sort(mon+1, mon+n+1, comp);
 solve();
 afisare();
	
 return 0;
}