Advertisement
kokokozhina

Untitled

Mar 14th, 2016
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <set>
  4. #include <string>
  5. #include <algorithm>
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10. #ifdef _DEBUG
  11.     freopen("input.txt", "r", stdin);
  12.     freopen("output.txt", "w", stdout);
  13. #endif
  14.     int n, m, s, d;
  15.     scanf("%d%d%d%d", &n, &m, &s, &d);
  16.     vector<bool> v(m + 1, false);
  17.     vector<int> b(n);//barrier
  18.     for(int i = 0; i < n; i++) scanf("%d", &b[i]);
  19.     sort(b.begin(), b.end());
  20.  
  21.     for(int i = 1; i < n; i++)
  22.     {
  23.         if(b[i] - b[i - 1] - 2 < s)
  24.             for(int j = b[i - 1]; j <= b[i]; j++)
  25.                 v[j] = true;
  26.         v[b[i - 1]] = true;
  27.     }
  28.     v[b[n-1]] = true;
  29.  
  30.     int len = 0;
  31.     vector<pair<int, int>> barbe;//barrier begin-end
  32.     barbe.push_back(make_pair(-1, -1));
  33.     for(int i = 0; i <= m; i++)//<?
  34.     {
  35.         if(v[i])
  36.             ++len;
  37.         else
  38.             if(len){
  39.                 if(len + 1 > d){printf("IMPOSSIBLE\n"); return 0;}
  40.                 barbe.push_back(make_pair(i - len, i - 1));
  41.                 len = 0;
  42.             }
  43.     }
  44.     if(barbe[1].first - barbe[0].second - 2 <= 0){printf("IMPOSSIBLE\n"); return 0;}
  45.     for(int i = 1; i < barbe.size(); i++)
  46.     {
  47.         printf("RUN %d\n", barbe[i].first - barbe[i - 1].second - 2);
  48.         printf("JUMP %d\n", barbe[i].second - barbe[i].first + 2);
  49.     }
  50.     if(m - barbe.back().second - 1)
  51.         printf("RUN %d\n", m - barbe.back().second - 1);
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement