Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

NUVEMMG - Computação em nuvem

O conceito de computação em nuvem tem se tornado muito popular nos últimos tempos. Um dos principais tipos de computação em nuvem é conhecido como IaaS (Infrastructure as a Service, em português Infraestrutura como Serviço), onde provedores disponibilizam servidores que podem ser alugados e gerenciados pela Internet.

A Cloud, Inc. é uma empresa que disponibiliza serviços de IaaS. Ela está projetando um novo data center para atender a seus clientes. Através de uma pesquisa, eles descobriram que seus clientes, como um todo, precisam de K servidores, cada um dos quais precisa ser capaz de suportar um certo nível de demanda. Se supormos que o custo de um servidor sempre cresce à medida que a demanda que aquele servidor deve suportar cresce, a melhor solução em termos de custo é comprar K servidores que sejam cada um explicitamente montados de forma a atender exatamente à demanda necessária.

Porém, ter K configurações diferentes de hardware no data center é extremamente problemático para os administradores de sistema. Para simplificar a administração, eles exigem que sejam comprados não mais do que L tipos diferentes de servidor. Um servidor que suporta uma certa demanda c também suporta qualquer demanda menor que c.

Uma solução possível é comprar apenas um tipo de servidor, que seja capaz de atender à maior demanda necessária, pois ele também será capaz de atender a todas as outras demandas. Porém, o custo dessa solução pode ser proibitivo. Considerando que você pode comprar até L tipos diferentes de servidor, provavelmente há uma solução melhor. Por exemplo, suponha que haja 3 clientes, com demandas 3, 7 e 16. Suponha que o custo de um servidor que suporta uma demanda até 3 é R$ 1.500, o custo de um servidor que suporta demanda 7 é R$ 5.500 e o custo de um servidor que suporta demanda 16 é de R$ 19.200. Se você quer comprar até 2 tipos de servidor para atender aos 3 clientes, há quatro opções:

  • Comprar três servidores de capacidade 16, a um custo total de R$ 57.600;
  • Comprar dois servidores de capacidade 16 e um servidor de capacidade 7, a um custo total de R$ 43.900;
  • Comprar dois servidores de capacidade 16 e um servidor de capacidade 3, a um custo total de R$ 39.900;
  • Comprar um servidor de capacidade 16 e dois servidores de capacidade 7, a um custo total de R$ 30.200.

Dentre essas opções, a que apresenta o menor custo é a última.

Você receberá uma lista de K demandas requisitadas e o preço de um servidor que suporta cada uma dessas demandas. Determine o menor preço total para comprar K servidores de forma tal que seja possível atingir a demanda requisitada e sejam comprados servidores de no máximo L tipos diferentes.

Observações

  • Cada servidor atende a um e apenas um cliente. Um servidor de capacidade 4 não pode atender simultaneamente a dois clientes com demanda 2 cada.
  • Sejam Di e Dj duas demandas, e Pi e Pj os preços associados a servidores que sejam capazes de suprir essas demandas. Se Di < Dj, então Pi ≤ Pj.

Entrada

Há vários casos de teste.

Cada caso de teste começa com uma linha contendo dois inteiros K e L, respectivamente o número de servidores requisitados e o número máximo de tipos de servidor a serem comprados (1 ≤ L ≤ K ≤ 500). Em seguida, há K linhas, cada uma das quais contendo dois inteiros D e P, respectivamente a demanda necessária e o menor preço de um servidor que é capaz de atender àquela demanda (1 ≤ D ≤ 1000, 1 ≤ P ≤ 100.000). Se houver mais de uma linha com o mesmo valor de D, então essas linhas também terão mesmo valor de P.

A entrada termina com K = L = 0, que não deve ser processado.

Saída

Para cada caso de teste, imprima uma linha contendo um inteiro T, que representa o menor custo total que pode ser obtido.

Exemplos

Entrada:
10 3
1 1
2 4
3 5
4 7
5 8
6 12
7 13
8 18
9 19
10 21
0 0

Saída:
129

A melhor opção para comprar servidores de 3 tipos que atendam às dez demandas requisitadas é comprar:

  • 3 servidores que suportam demanda 10, que vão cobrir os casos de demanda 10, 9 e 8;
  • 2 servidores que suportam demanda 7, que vão cobrir os casos de demanda 7 e 6;
  • 5 servidores que suportam demanda 5, que vão cobrir os demais casos.

O custo total é 3*21 + 2*13 + 5*8 = 129.


Adicionado por:Wanderley Guimarăes
Data:2012-06-21
Tempo limite:0.800s
Tamanho do fonte:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Linguagem permitida:Todas exceto: ASM64 CLOJURE ERL FSHARP PERL6 PY_NBC SCALA TCL
Origem:Maratona Mineira 2012

hide comments
2012-09-17 03:08:32 Fernando Fonseca [ITA]
Coloquei uma versăo no SPOJ internacional com os limites um pouco maiores: http://www.spoj.pl/problems/CLOUDMG/
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.