Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2017
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.90 KB | None | 0 0
  1. #include <list>
  2. #include <map>
  3. #include <set>
  4. #include <deque>
  5. #include <stack>
  6. #include <queue>
  7. #include <algorithm>
  8. #include <sstream>
  9. #include <iostream>
  10. #include <iomanip>
  11. #include <cstdio>
  12. #include <unordered_map>
  13. #include <unordered_set>
  14. #include <cmath>
  15. #include <cstdlib>
  16. #include <memory.h>
  17. #include <ctime>
  18. #include <bitset>
  19.  
  20. using namespace std;
  21.  
  22. #define ABS(a) ((a>0)?a:-(a))
  23. #define MIN(a,b) ((a<b)?(a):(b))
  24. #define MAX(a,b) ((a<b)?(b):(a))
  25. #define FOR(i,a,n) for (int i=(a);i<(n);++i)
  26. #define FI(i,n) for (int i=0; i<(n); ++i)
  27. #define pnt pair <int, int>
  28. #define mp make_pair
  29. #define PI 3.1415926535897
  30. #define MEMS(a,b) memset(a,b,sizeof(a))
  31. #define LL long long
  32. #define U unsigned
  33.  
  34. int n;
  35. double cn, cf, cs;
  36. int tf, ts;
  37. int r[110];
  38. int used[110];
  39. int q[10010];
  40.  
  41. int main()
  42. {
  43. #ifdef Fcdkbear
  44.     freopen("in.txt", "r", stdin);
  45.     double beg = clock();
  46.     //freopen("out.txt", "w", stdout);
  47. #endif
  48.    
  49.     cin >> n >> cn >> cf >> cs >> tf >> ts;
  50.     int from = 0;
  51.     int to = 0;
  52.     FOR(i, 0, n) {
  53.         cin >> r[i];
  54.         from = max(from, r[i]);
  55.         to += r[i];
  56.     }
  57.     double res = 1e40;
  58.     FOR(buy, from, to + 1) {
  59.         int have = buy;
  60.         FOR(i, 0, n) {
  61.             used[i] = 0;
  62.         }
  63.         int p = 0;
  64.         int fixedByFirm = 0;
  65.         int fixedByMe = 0;
  66.         bool ok = true;
  67.         int le = 0;
  68.         int ri = 0;
  69.         FOR(i, 0, n) {
  70.             if (i >= tf) {
  71.                 FOR(j, 0, r[i - tf]) {
  72.                     q[ri++] = i - tf;
  73.                 }
  74.             }
  75.             while (have < r[i]) {
  76.                 if (le >= ri) {
  77.                     ok = false;
  78.                     break;
  79.                 }
  80.                 if (i - q[le] >= ts) {
  81.                     le++;
  82.                     fixedByMe++;
  83.                     have++;
  84.                 }
  85.                 else {
  86.                     ri--;
  87.                     fixedByFirm++;
  88.                     have++;
  89.                 }
  90.             }
  91.             have -= r[i];
  92.         }
  93.         if (ok) {
  94.             res = min(res, buy * cn + fixedByFirm * cf + fixedByMe*cs);
  95.         }
  96.     }
  97.     printf("%.2lf\n", res);
  98.  
  99. #ifdef Fcdkbear
  100.     double end = clock();
  101.     fprintf(stderr, "*** Total time = %.3lf ***\n", (end - beg) / CLOCKS_PER_SEC);
  102. #endif
  103.     return 0;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement