Advertisement
SSS_Krut

Задача 300(48%)

Jul 2nd, 2021
1,082
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.50 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <list>
  4. using namespace std;
  5. struct Rocket {
  6.     int TLiftOff;
  7.     int Velocity;
  8.     int timeOfHit;
  9. };
  10. int main()
  11. {
  12.     vector<Rocket> vec;
  13.     int queweOfHits[] = { 0,1,2,3 };
  14.     int difBetweenHits[] = { 0,0,0,0 };
  15.     int timeR;
  16.     int range;
  17.     int dir;
  18.     bool DEAD = false;
  19.     int dir_firstHit;
  20.     int countofdefeated = 0;
  21.     for (int i = 0; i != 4; i++) {
  22.         Rocket temp;
  23.         cin >> temp.TLiftOff >> temp.Velocity;
  24.         vec.push_back(temp);
  25.     }
  26.     cin >> timeR >> range;
  27.     int firstdirtime = 1001;
  28.     int firsthitdirtime = 1001;
  29.     for (int i = 0; i != 4; i++) {
  30.         if (firstdirtime > vec[i].TLiftOff)
  31.             dir = i;
  32.         vec[i].timeOfHit = vec[i].TLiftOff + range / vec[i].Velocity;
  33.     }
  34.     for (int q = 0; q != 4; q++) {
  35.         for (int i = 0; i != 3; i++) {
  36.             if (vec[queweOfHits[i]].timeOfHit > vec[queweOfHits[i + 1]].timeOfHit) {
  37.                 int t = queweOfHits[i];
  38.                 queweOfHits[i] = queweOfHits[i + 1];
  39.                 queweOfHits[i + 1] = t;
  40.             }
  41.             else if (vec[queweOfHits[i]].timeOfHit == vec[queweOfHits[i + 1]].timeOfHit) {
  42.                 if (queweOfHits[i] - dir > 1 or queweOfHits[i] - dir < -1) {
  43.                     int t = queweOfHits[i + 1];
  44.                     queweOfHits[i + 1] = queweOfHits[i];
  45.                     queweOfHits[i] = t;
  46.                 }
  47.             }
  48.         }
  49.     }
  50.     difBetweenHits[0] = vec[queweOfHits[0]].timeOfHit;
  51.     for (int i = 1; i != 4; i++) {
  52.         difBetweenHits[i] = vec[queweOfHits[i]].timeOfHit - vec[queweOfHits[i - 1]].timeOfHit;
  53.     }
  54.     for (int i = 0; i != 4; i++) {
  55.         if (dir == queweOfHits[i]) {
  56.             countofdefeated++;
  57.         }
  58.         else {
  59.             if (queweOfHits[i] - dir > 1 or queweOfHits[i] - dir < -1) {
  60.                 //Поворотов не более 2
  61.                 dir = queweOfHits[i];
  62.                 if (difBetweenHits[i] >= timeR * 2) {
  63.                     countofdefeated++;
  64.                 }
  65.                 else { DEAD = true; goto dead;}
  66.             }
  67.             else {
  68.                 dir = queweOfHits[i];
  69.                 if (difBetweenHits[i] >= timeR) {
  70.                     countofdefeated++;
  71.                 }
  72.                 else { DEAD = true; goto dead; }
  73.             }
  74.         }
  75.     }
  76.     dead:
  77.     if (DEAD) {
  78.         cout << countofdefeated << endl;
  79.     }
  80.     else {
  81.         cout << "ALIVE" << endl;
  82.     }
  83. }
  84.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement