Cod sursa(job #1453637)

Utilizator dyanagGrigore Diana dyanag Data 24 iunie 2015 00:21:13
Problema Shop Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;

FILE *f=fopen("shop.in", "r");
FILE *g=fopen("shop.out", "w");

struct date{
    int b, p;
    long long nr, a;
} v[31];

bool cmp(date a, date b){
    return (a.a>b.a);
}

bool cmp2(date a, date b){
    return (a.p<b.p);
}

long long put(int x, int y){
    long long a=x, b=y, p=1;
    while(b!=0){
        if(b%2==1){
            p=p*a;
            --b;
        }
        a=(a*a);
        b/=2;
    }
    return p;
}

int main()
{
    int n, l, c;
    long long suma=0;
    fscanf(f, "%d%d%d", &n, &c, &l);
    for(int i=1; i<=n; ++i){
        int x;
        fscanf(f, "%d%d", &x, &v[i].b);
        v[i].p=i;
        v[i].a=put(c, x);
    }
    sort(v+1, v+n+1, cmp);
    for(int i=1; i<=n; ++i){
        long long nr=v[i].a, s;
        s=min(nr*v[i].b, l/nr*nr);
        l-=s;
        suma=suma+s/nr;
        v[i].nr=s/nr;
    }
    sort(v+1, v+n+1, cmp2);
    fprintf(g, "%I64d\n", suma);
    for(int i=1; i<=n; ++i)
        fprintf(g, "%I64d ", v[i].nr);
}