Cod sursa(job #964571)

Utilizator sddddgjdZloteanu Anastasia sddddgjd Data 21 iunie 2013 15:22:51
Problema Shop Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.63 kb
#include<stdio.h>
int a[30],b[30],copie[30],ind[30];
int main()
{
    FILE *fin,*fout;
    fin=fopen("shop.in","r");
    fout=fopen("shop.out","w");
    int n,c;
    long long l;
    fscanf(fin,"%d%d%lld",&n,&c,&l);
    int i;
    for(i=0; i<n; i++)
    {
        fscanf(fin,"%d%d",&a[i],&b[i]);
        copie[i]=b[i];
        ind[i]=i;
    }
    int j;
    for(i=0; i<n; i++)
        for(j=i+1; j<n; j++)
        {
            if(a[j]>a[i])
            {
                int aux=a[j];
                a[j]=a[i];
                a[i]=aux;
                //
                aux=b[j];
                b[j]=b[i];
                b[i]=aux;
                //
                aux=ind[j];
                ind[j]=ind[i];
                ind[i]=aux;
            }
        }
    int coins=0,poz=0;
    for(i=0; i<n; i++)
    {
        long long putere=1;
        int copie=a[i];
        while(a[i])
            putere*=c,a[i]--;
        a[i]=copie;
        while(l-putere>=0&&b[i])
            l-=putere,b[i]--,coins++;
        if(l==0)
            poz=i,i=n;
    }
    for(i=0; i<n; i++)
        for(j=i+1; j<n; j++)
        {
            if(ind[j]<ind[i])
            {
                int aux=a[j];
                a[j]=a[i];
                a[i]=aux;
                //
                aux=b[j];
                b[j]=b[i];
                b[i]=aux;
                //
                aux=ind[j];
                ind[j]=ind[i];
                ind[i]=aux;
            }
        }
    fprintf(fout,"%d\n",coins);
    for(i=0;i<n;i++)
    {
        fprintf(fout,"%d ",copie[i]-b[i]);
    }
    return 0;
}