iscsi

SRM 438 D2 500 FeudaliasBattle

Jul 29th, 2011
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.47 KB | None | 0 0
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <sstream>
  4. #include <string>
  5. #include <vector>
  6. #include <queue>
  7. #include <set>
  8. #include <map>
  9. #include <cstdio>
  10. #include <cstdlib>
  11. #include <cctype>
  12. #include <cmath>
  13. using namespace std;
  14. typedef long long LL;
  15. #define FOR(k,a,b) for(int k(a); k < (b); ++k)
  16. #define REP(k,a) for(int k=0; k < (a); ++k)
  17.  
  18.  
  19. class FeudaliasBattle {
  20.     vector<int> mBX,mBY,mSX,mSY;
  21.     double mTOT,mRT,mMS;
  22.     double dist(double x1, double y1, double x2, double y2)
  23.     {
  24.         return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
  25.     }
  26.     double destroyS(int b, int s)
  27.     {
  28.         double res=mTOT;
  29.         res+=dist(mBX[b],mBY[b],mSX[s],mSY[s])/mMS;
  30.         return res;
  31.     }
  32.     double destroyD(int b)
  33.     {
  34.         double res,res2,res3,res4;
  35.         res=mTOT+dist(mBX[0],mBY[0],mSX[b],mSY[b])/mMS;
  36.         res2=2*mTOT+mRT+dist(mBX[1],mBY[1],mSX[b],mSY[b])/mMS;
  37.         res3=mTOT+dist(mBX[1],mBY[1],mSX[b],mSY[b])/mMS;
  38.         res4=2*mTOT+mRT+dist(mBX[0],mBY[0],mSX[b],mSY[b])/mMS;
  39.         return min(max(res,res2),max(res3,res4));
  40.     }
  41. public:
  42.     double getMinimumTime(vector <int> baseX, vector <int> baseY, vector <int> siloX, vector <int> siloY, int takeOffTime, int rechargeTime, int missileSpeed) {
  43.         mBX=baseX,mBY=baseY,mSX=siloX,mSY=siloY;
  44.         mTOT=takeOffTime/60.0,mRT=rechargeTime,mMS=missileSpeed;
  45.         double res=destroyD(0);
  46.         res=min(res,destroyD(1));
  47.         REP(i,2)
  48.         {
  49.             res=min(res,max(destroyS(i,0),destroyS(1-i,1)));
  50.             res=min(res,max(destroyS(1-i,0),destroyS(i,1)));
  51.         }
  52.         return res;
  53.     }
  54.  
  55. };
Advertisement
Add Comment
Please, Sign In to add comment