Pagini recente » Cod sursa (job #1196847) | Cod sursa (job #1407124) | Cod sursa (job #1256877) | Cod sursa (job #2543725) | Cod sursa (job #523159)
Cod sursa(job #523159)
#include<fstream>
#include<algorithm>
#define NMAX 32
using namespace std;
struct shop
{
int x, y, o;
long long p, v;
}a[NMAX];
int i, n;
long long c, L;
ifstream f("shop.in");
ofstream g("shop.out");
struct cmp
{
bool operator() (shop q, shop w)
{
if (q.x<w.x) return 1; return 0;
}
};
struct cmp2
{
bool operator() (shop q, shop w)
{
if (q.o<w.o) return 1; return 0;
}
};
void citeste()
{
int i;
f>>n>>c>>L;
for (i=1; i<=n; ++i) {f>>a[i].x>>a[i].y; a[i].o=i;}
sort(a+1, a+n+1, cmp());
}
inline int minim(long long x, long long y)
{
return x<y ? x : y;
}
void solve()
{
int p=1, i, j=1, sum=0;
long long v;
for (i=0; i<=a[n].x; ++i)
{
if(i==a[j].x) a[j++].p=p;
p*=c;
}
for (i=n; i>0; --i)
{
v=minim(a[i].y, L/a[i].p);
L-=a[i].p*v; a[i].v=v; sum+=v;
}
g<<sum<<"\n";
sort(a+1, a+n+1, cmp2());
for (i=1; i<=n; ++i)
g<<a[i].v<<" ";
}
int main()
{
citeste();
solve();
f.close();
g.close();
return 0;
}