uva 10670 - Work Reduction
来源:互联网 发布:spring cloud node 编辑:程序博客网 时间:2024/05/17 20:33
#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;}