Pagini recente » Cod sursa (job #2989788) | Cod sursa (job #1869841) | Cod sursa (job #1041283) | Cod sursa (job #2553046) | Cod sursa (job #2456495)
#include <bits/stdc++.h>
using namespace std;
ifstream f("shop.in");
ofstream g("shop.out");
const int NMAX = 35;
long long n,c,l,rez,ans,ansid[NMAX];
struct VAR{
pair <long long, int> Pair;
int id;
}v[NMAX];
long long power(long long c, long long x){
rez = 1;
while(x){
if(x & 1){
rez = rez * c;
x--;
}else{
c = c * c;
x /= 2;
}
}
return rez;
}
bool cmp(VAR X, VAR Y){
return X.Pair.first < Y.Pair.first;
}
int main(){
int i;
long long value;
f >> n >> c >> l;
for(i = 1 ; i <= n ; i++){
f >> v[i].Pair.first >> v[i].Pair.second;
v[i].id = i;
v[i].Pair.first = power(c,v[i].Pair.first);
}
sort(v + 1, v + n + 1, cmp);
for(i = n ; i >= 1 && l; i--){
value = v[i].Pair.second * v[i].Pair.first;
if(value <= l){
l -= value;
ansid[v[i].id] = v[i].Pair.second;
ans += v[i].Pair.second;
}else{
ans += (l / v[i].Pair.first);
ansid[v[i].id] = l / v[i].Pair.first;
l -= v[i].Pair.first * ansid[v[i].id];
}
}
g << ans << "\n";
for(i = 1 ; i <= n ; i++)
g << ansid[i] << " ";
return 0;
}