Pagini recente » Cod sursa (job #1977588) | Cod sursa (job #3277159) | Cod sursa (job #1548952) | Cod sursa (job #63039) | Cod sursa (job #1005775)
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
#include <climits>
#include <algorithm>
#include <cmath>
#include <queue>
#include <deque>
#include <iomanip>
using namespace std;
ifstream fin("shop.in");
ofstream fout("shop.out");
#define baza 10
#define MAX 50000
typedef long long int lli;
struct sebi{
int x,y,z,in;
};
sebi a[35];
lli pow(int n, int exp)
{
lli p=1;
while(exp)
{
if(exp&1)
p*=n;
n*=n;
exp>>=1;
}
return p;
}
inline bool cmp(sebi b, sebi c)
{
return b.x>c.x;
}
inline bool cmp2(sebi b, sebi c)
{
return b.z<c.z;
}
int main()
{
lli n, c, l;
fin>>n>>c>>l;
lli s=0, i;
for(i=1;i<=n;i++)
{
fin>>a[i].x>>a[i].y;
a[i].z=i;
}
sort(a+1, a+n+1, cmp);
for(i=1;l;i++)
{
lli y=pow(c, a[i].x);
while(l>=y && a[i].y)
{
l-=y;
a[i].y--;
a[i].in++;
}
s+=a[i].in;
}
sort(a+1,a+n+1, cmp2);
fout<<s<<"\n";
for(i=1;i<=n;i++)
{
fout<<a[i].in<<" ";
}
return 0;
}