Cod sursa(job #940450)

Utilizator rudarelLup Ionut rudarel Data 16 aprilie 2013 11:31:22
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
struct vect
{
    long long x;
    int nr;
};
int n,x,rez;
long long suma;
vect v[40];
int sol[40];
int ind[40];
 
int comp(int i, int j)
{
    if(v[i].x>v[j].x)
        return 1;
    return 0;
}
 
int main()
{
    freopen("shop.in","r",stdin);
    freopen("shop.out","w",stdout);
    scanf("%d%d%lld",&n,&x,&suma);
    int i,nr,j;
    for(i=1;i<=n;i++)
    {
        ind[i]=i;
        v[i].x=1;
        scanf("%d%d",&nr,&v[i].nr);
        for(j=1;j<=nr && v[i].x<=suma;j++)
            v[i].x*=x;
    }
    sort(ind+1,ind+n+1,comp);
    for(i=1;i<=n;i++)
    {
        sol[ind[i]]=suma/v[ind[i]].x;
        suma=suma-sol[ind[i]]*v[ind[i]].x;
        if(sol[ind[i]]>v[ind[i]].nr)
        {
            suma=suma+v[ind[i]].x*(sol[ind[i]]-v[ind[i]].nr);
            sol[ind[i]]=v[ind[i]].nr;
        }
        rez=rez+sol[ind[i]];
    }
    printf("%d\n",rez);
    for(i=1;i<=n;i++)
        printf("%d ",sol[i]);
    return 0;
}