Cod sursa(job #2242199)

Utilizator vladisimovlad coneschi vladisimo Data 18 septembrie 2018 08:31:27
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <algorithm>
#include <cmath>
#include <cstdio>

struct Pow {
  long long nr;
  int times;
  int ord;

  bool operator < (const Pow &other) const {
    return this->nr > other.nr;
  }
};

int main() {
  freopen("shop.in", "r", stdin);
  freopen("shop.out", "w", stdout);
  int n, c;
  long long l;
  scanf("%d%d%lld", &n, &c, &l);
  Pow powers[2 + n];
  for (int i = 1; i <= n; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    long long a1 = (long long)std::pow(c, a);
    powers[i].nr = a1;
    powers[i].times = b;
    powers[i].ord = i;
  }
  std::sort(powers + 1, powers + n + 1);
  int sol[2 + n], sum = 0;
  for (int i = 1; i <= n; i++) {
    sol[powers[i].ord] = l / powers[i].nr;
    sol[powers[i].ord] = std::min(sol[powers[i].ord], powers[i].times);
    l -= sol[powers[i].ord] * powers[i].nr;
    sum += sol[powers[i].ord];
  }
  printf("%d\n", sum);
  for (int i = 1; i <= n; i++)
    printf("%d ", sol[i]);
  return 0;
}