Cod sursa(job #2506592)

Utilizator Diana-ElenaStancu Diana-Elena Diana-Elena Data 8 decembrie 2019 14:41:06
Problema Shop Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("shop.in");
ofstream cout("shop.out");


int main()
{
  long long int n, l, c, a, nr[40], val[40], ord[40], i, d, mon = 0;
  cin >> n >> c >> l;
  for(i = 1; i <= n; ++i)
  {
    cin >> a >> nr[i];
    val[i] =  pow(c, a);
    ord[i] = i;
  }
  bool s = 0;
  while(!s)
  {
    s = 1;
    for(i = 1; i < n; ++i)
      if(val[i] < val[i + 1])
      {
        s = 0;
        swap(nr[i], nr[i + 1]);
        swap(val[i], val[i + 1]);
        swap(ord[i], ord[i + 1]);
      }
  }
  for(i = 1; i <= n; ++i)
  {
    d = l/val[i];
    if(d > nr[i])
    {
      l = l - nr[i] * val[i];
      mon += nr[i];
    }
    else
    {
      nr[i] = d;
      l = l - d * val[i];
      mon += d;
    }
  }
  s = 0;
  while(!s)
  {
    s = 1;
    for(i = 1; i < n; ++i)
      if(ord[i] > ord[i + 1])
      {
        s = 0;
        swap(nr[i], nr[i + 1]);
        swap(ord[i], ord[i + 1]);
      }
  }
  cout << mon << '\n';
  for(i = 1; i <= n; ++i)
    cout << nr[i] << ' ';
  return 0;
}