1079. Total Sales of Supply Chain (25)

来源:互联网 发布:智能手环功能原理 知乎 编辑:程序博客网 时间:2024/04/28 00:10
#include <iostream>#include <cstdio>#include <cmath>using namespace std;#define N 100000inline double rate(int i, double rr[], double r) {if(!rr[i]) {int j = i;for(; !rr[j]; j --) ;for(j ++; j <= i; j ++) {rr[j] = rr[j-1] * (1.0+r/100.0);}}return rr[i];}inline int exp(int i, int rid[], int expo[]) {if(expo[i] || i == 0)return expo[i];else {expo[i] = exp(rid[i], rid, expo) + 1;return expo[i];}}double rr[N] = {};int rid[N] = {};double retailer[N] = {};int expo[N] = {};int main(int argc, char **argv) {int n;double p, r;scanf("%d%lf%lf", &n, &p, &r);for(int i = 0; i < n; i ++) {int m;scanf("%d", &m);if(!m) {scanf("%lf", &retailer[i]);}else {for(int j = 0; j < m; j ++) {int c;scanf("%d", &c);rid[c] = i;}}}rr[0] = 1.0;double sale = 0;for(int i = 0; i < n; i ++) {if(retailer[i]) {sale += retailer[i]*p*rate(exp(i, rid, expo), rr, r);}}printf("%.1lf\n", sale);return 0;} 

0 0