#include <stdio.h>
#include <malloc.h>
struct pearlInfo{
int number;
int price;
};
typedef struct pearlInfo pearlInfo;
struct BuyOP {
int cost;
int higerGlass;
};
typedef struct BuyOP BuyOP;
void getLowestCost(pearlInfo * pearlBuyList, int buyListSize) {
BuyOP Min[101] = {0};
int sum[101] = {0};
sum[0] = pearlBuyList[0].number;
for (int i = 1; i < buyListSize; i++) {
sum[i] = sum[i-1] + pearlBuyList[i].number;
printf("%d\n", sum[i]);
}
Min[buyListSize-1].cost = (sum[buyListSize-1] + 10)*pearlBuyList[buyListSize-1].price;
Min[buyListSize-1].higerGlass = buyListSize-1;
for (int i = buyListSize-2; i >= 0; i--) {
int buyThisGlass = Min[i+1].cost - sum[i]*pearlBuyList[Min[i+1].higerGlass].price + (sum[i] + 10)*pearlBuyList[i].price;
int buyHigerGlass = Min[i+1].cost;
printf("sum[i] %d %d %d\n", sum[i], buyThisGlass, buyHigerGlass);
if (buyThisGlass < buyHigerGlass) {
Min[i].cost = buyThisGlass;
Min[i].higerGlass = i;
printf("choose %d %d\n", i, Min[i].higerGlass);
} else {
Min[i].cost = buyHigerGlass;
Min[i].higerGlass = Min[i+1].higerGlass;
printf("no choose %d %d\n", i, Min[i].higerGlass);
}
}
printf("%d\n", Min[0].cost);
}
int main() {
int caseNum = 0;
scanf("%d", &caseNum);
for (int i = 0; i < caseNum; i++) {
int buyNum = 0;
scanf("%d", &buyNum);
pearlInfo * pearlBuyList = (pearlInfo *)malloc(sizeof(pearlInfo) * buyNum);
for (int j = 0; j < buyNum; j++) {
scanf("%d %d", &((pearlBuyList+j)->number), &((pearlBuyList+j)->price));
// printf("%d %d\n", (pearlBuyList+j)->number, (pearlBuyList+j)->price);
}
getLowestCost(pearlBuyList, buyNum);
free(pearlBuyList);
}
}
#include <malloc.h>
struct pearlInfo{
int number;
int price;
};
typedef struct pearlInfo pearlInfo;
struct BuyOP {
int cost;
int higerGlass;
};
typedef struct BuyOP BuyOP;
void getLowestCost(pearlInfo * pearlBuyList, int buyListSize) {
BuyOP Min[101] = {0};
int sum[101] = {0};
sum[0] = pearlBuyList[0].number;
for (int i = 1; i < buyListSize; i++) {
sum[i] = sum[i-1] + pearlBuyList[i].number;
printf("%d\n", sum[i]);
}
Min[buyListSize-1].cost = (sum[buyListSize-1] + 10)*pearlBuyList[buyListSize-1].price;
Min[buyListSize-1].higerGlass = buyListSize-1;
for (int i = buyListSize-2; i >= 0; i--) {
int buyThisGlass = Min[i+1].cost - sum[i]*pearlBuyList[Min[i+1].higerGlass].price + (sum[i] + 10)*pearlBuyList[i].price;
int buyHigerGlass = Min[i+1].cost;
printf("sum[i] %d %d %d\n", sum[i], buyThisGlass, buyHigerGlass);
if (buyThisGlass < buyHigerGlass) {
Min[i].cost = buyThisGlass;
Min[i].higerGlass = i;
printf("choose %d %d\n", i, Min[i].higerGlass);
} else {
Min[i].cost = buyHigerGlass;
Min[i].higerGlass = Min[i+1].higerGlass;
printf("no choose %d %d\n", i, Min[i].higerGlass);
}
}
printf("%d\n", Min[0].cost);
}
int main() {
int caseNum = 0;
scanf("%d", &caseNum);
for (int i = 0; i < caseNum; i++) {
int buyNum = 0;
scanf("%d", &buyNum);
pearlInfo * pearlBuyList = (pearlInfo *)malloc(sizeof(pearlInfo) * buyNum);
for (int j = 0; j < buyNum; j++) {
scanf("%d %d", &((pearlBuyList+j)->number), &((pearlBuyList+j)->price));
// printf("%d %d\n", (pearlBuyList+j)->number, (pearlBuyList+j)->price);
}
getLowestCost(pearlBuyList, buyNum);
free(pearlBuyList);
}
}