Pagini recente » Cod sursa (job #165400) | Cod sursa (job #812307) | Cod sursa (job #2561658) | Cod sursa (job #798195) | Cod sursa (job #1209697)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
void shellsort(int a[100][4],int n)
{
long long j,i,m,mid;
for(m = n/2;m>0;m/=2)
{
for(j = m;j< n;j++)
{
for(i=j-m;i>=0;i-=m)
{
if(a[i+m][1]<=a[i][1])
break;
else
{
mid = a[i][2];
a[i][2] = a[i+m][2];
a[i+m][2] = mid;
mid = a[i][1];
a[i][1] = a[i+m][1];
a[i+m][1] = mid;
mid = a[i][3];
a[i][3] = a[i+m][3];
a[i+m][3] = mid;
}
}
}
}
}
int main()
{
ifstream f("shop.in");
ofstream g("shop.out");
int n,v[100][4],c,m[100]={};
long long s=0,l;
f>>n;
f>>c;
f>>l;
long long cnt=0;
for(long long i=0;i<n;i++){
f>>v[i][1];
f>>v[i][2];
v[i][3]=i;
}
shellsort(v,n);
long long nr=0;
//for(long long i=0;i<n;i++)
//cout<<v[i][2]<<" ";
for(long long i=0;i<n;i++)
{
long long ct=v[i][2];
while((s+(long long)pow(c,v[i][1]))<=l&&ct>0)
{
s+=(long long)pow(c,v[i][1]);
ct--;
}
m[v[i][3]]=v[i][2]-ct;
nr+=v[i][2]-ct;
// cout<< v[i][3]<<" "<<v[i][2]-ct<<" \n";
}
g<<nr<<"\n";
for(long long i=0;i<n;i++)
g<<m[i]<<" ";
return 0;
}