Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _USE_MATH_DEFINES
- #include <iostream>
- #include <string>
- #include <map>
- #include <set>
- #include <algorithm>
- #include <vector>
- #include <stdio.h>
- #include <cmath>
- #include <math.h>
- #include <queue>
- #include <stack>
- #include <climits>
- #include <deque>
- #include <ctime>
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- typedef unsigned int ui;
- #define mh() make_heap()
- #define poph() pop_heap()
- #define pushh() push_heap()
- #define sor(n) n.begin(), n.end()
- #define mp make_pair
- #define files freopen("input.txt", "rt", stdin); freopen("output.txt", "wt", stdout)
- #define p(T) pair<T,T>
- #define znac(l) abs(l)/l
- const ll ok = ll(1e9 + 7);
- int main()
- {
- files;
- map<ll,vector<ll>>r, l;
- ll n, m;
- cin >> n >> m;
- string s1, s2;
- cin >> s1;
- ll bad = 0;
- for (int i = 0; i < s1.size(); i++)
- {
- if (s1[i] == '#')
- bad = i + 1;
- else
- if (s1[i] == 'D')
- {
- l[i + 1- bad].push_back(i + 1);
- }
- }
- bad = n + 1;
- for (int i = s1.size()-1; i >=0; i--)
- {
- if (s1[i] == '#')
- bad = i + 1;
- else
- if (s1[i] == 'D')
- {
- r[bad - i - 1].push_back(i + 1);
- }
- }
- cin >> s2;
- ll k = 0;
- for (int i = 0; i < s2.size(); i++)
- {
- if (s2[i] == 'L')
- k--;
- else
- k++;
- if (k < 0)
- {
- if (l.find(abs(k)) != l.end())
- l.erase(l.find(abs(k)));
- }
- else
- {
- if (r.find(k) != r.end())
- r.erase(r.find(k));
- }
- }
- set<ll>o;
- for (auto i = l.begin(); i != l.end(); i++)
- {
- for (int j = 0; j < i->second.size(); j++)
- {
- o.insert(i->second[j]);
- }
- }
- set<ll>answ;
- for (auto i = r.begin(); i != r.end(); i++)
- {
- for (int j = 0; j < i->second.size(); j++)
- {
- if (o.find(i->second[j]) != o.end())
- answ.insert(i->second[j]);
- }
- }
- cout << answ.size() << endl;
- for (auto i = answ.begin(); i != answ.end(); i++)
- cout << *i << " ";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment