Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <list>
- #include <map>
- #include <set>
- #include <deque>
- #include <stack>
- #include <queue>
- #include <algorithm>
- #include <sstream>
- #include <iostream>
- #include <iomanip>
- #include <cstdio>
- #include <unordered_map>
- #include <unordered_set>
- #include <cmath>
- #include <cstdlib>
- #include <memory.h>
- #include <ctime>
- #include <bitset>
- using namespace std;
- #define ABS(a) ((a>0)?a:-(a))
- #define MIN(a,b) ((a<b)?(a):(b))
- #define MAX(a,b) ((a<b)?(b):(a))
- #define FOR(i,a,n) for (int i=(a);i<(n);++i)
- #define FI(i,n) for (int i=0; i<(n); ++i)
- #define pnt pair <int, int>
- #define mp make_pair
- #define PI 3.1415926535897
- #define MEMS(a,b) memset(a,b,sizeof(a))
- #define LL long long
- #define U unsigned
- int n;
- double cn, cf, cs;
- int tf, ts;
- int r[110];
- int used[110];
- int q[10010];
- int main()
- {
- #ifdef Fcdkbear
- freopen("in.txt", "r", stdin);
- double beg = clock();
- //freopen("out.txt", "w", stdout);
- #endif
- cin >> n >> cn >> cf >> cs >> tf >> ts;
- int from = 0;
- int to = 0;
- FOR(i, 0, n) {
- cin >> r[i];
- from = max(from, r[i]);
- to += r[i];
- }
- double res = 1e40;
- FOR(buy, from, to + 1) {
- int have = buy;
- FOR(i, 0, n) {
- used[i] = 0;
- }
- int p = 0;
- int fixedByFirm = 0;
- int fixedByMe = 0;
- bool ok = true;
- int le = 0;
- int ri = 0;
- FOR(i, 0, n) {
- if (i >= tf) {
- FOR(j, 0, r[i - tf]) {
- q[ri++] = i - tf;
- }
- }
- while (have < r[i]) {
- if (le >= ri) {
- ok = false;
- break;
- }
- if (i - q[le] >= ts) {
- le++;
- fixedByMe++;
- have++;
- }
- else {
- ri--;
- fixedByFirm++;
- have++;
- }
- }
- have -= r[i];
- }
- if (ok) {
- res = min(res, buy * cn + fixedByFirm * cf + fixedByMe*cs);
- }
- }
- printf("%.2lf\n", res);
- #ifdef Fcdkbear
- double end = clock();
- fprintf(stderr, "*** Total time = %.3lf ***\n", (end - beg) / CLOCKS_PER_SEC);
- #endif
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement