#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <algorithm>
#define maxn 100 + 10
#define ll long long
#define INF 1000000000
#define FOR(i, a, b) for(int i = a; i < b; ++i)
using namespace std;
struct agency{int a, b, v; char name[20];}agen[maxn];
int cmp(const void *x, const void *y)
{
if((*(agency*)x).v != (*(agency*)y).v)
return (*(agency*)x).v - (*(agency*)y).v;
return strcmp((*(agency*)x).name, (*(agency*)y).name);
}
int main()
{
int t, kase = 0;
scanf("%d", &t);
while(t--)
{
int n, m, l;
scanf("%d%d%d", &n, &m, &l);
char str[50];
FOR(i, 0, l) {scanf("%s", str); sscanf(str, "%[^:]:%d,%d", agen[i].name, &agen[i].a, &agen[i].b);}
//FOR(i, 0, l) printf("%s:%d,%d\n", agen[i].name, agen[i].a, agen[i].b);
FOR(i, 0, l)
{
int num_a = 0, num_b = 0, tmp = n;
while(tmp/2 >= m && agen[i].a*(tmp/2) > agen[i].b)
{
tmp/=2;
++num_b;
}
num_a = tmp - m;
agen[i].v = num_a*agen[i].a + num_b*agen[i].b;
}
qsort(agen, l, sizeof(agen[0]), cmp);
printf("Case %d\n", ++kase);
FOR(i, 0, l) printf("%s %d\n", agen[i].name, agen[i].v);
}
return 0;
}
uva 10670 - Work Reduction

最新推荐文章于 2016-03-05 13:16:12 发布
