Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <set>
- #include <string>
- #include <algorithm>
- using namespace std;
- int main()
- {
- #ifdef _DEBUG
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- #endif
- int n, m, s, d;
- scanf("%d%d%d%d", &n, &m, &s, &d);
- vector<bool> v(m + 1, false);
- vector<int> b(n);//barrier
- for(int i = 0; i < n; i++) scanf("%d", &b[i]);
- sort(b.begin(), b.end());
- for(int i = 1; i < n; i++)
- {
- if(b[i] - b[i - 1] - 2 < s)
- for(int j = b[i - 1]; j <= b[i]; j++)
- v[j] = true;
- v[b[i - 1]] = true;
- }
- v[b[n-1]] = true;
- int len = 0;
- vector<pair<int, int>> barbe;//barrier begin-end
- barbe.push_back(make_pair(-1, -1));
- for(int i = 0; i <= m; i++)//<?
- {
- if(v[i])
- ++len;
- else
- if(len){
- if(len + 1 > d){printf("IMPOSSIBLE\n"); return 0;}
- barbe.push_back(make_pair(i - len, i - 1));
- len = 0;
- }
- }
- if(barbe[1].first - barbe[0].second - 2 <= 0){printf("IMPOSSIBLE\n"); return 0;}
- for(int i = 1; i < barbe.size(); i++)
- {
- printf("RUN %d\n", barbe[i].first - barbe[i - 1].second - 2);
- printf("JUMP %d\n", barbe[i].second - barbe[i].first + 2);
- }
- if(m - barbe.back().second - 1)
- printf("RUN %d\n", m - barbe.back().second - 1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement