-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathA_Homework.cpp
More file actions
231 lines (205 loc) · 4.88 KB
/
A_Homework.cpp
File metadata and controls
231 lines (205 loc) · 4.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
#include <bits/stdc++.h>
#include <algorithm>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimization("unroll-loops")
#define pb push_back
#define nl '\n'
#define sp ' '
#define pi 2 * acos(0.0)
#define mod 1000000007
// Types of declarations /////////////////////////////////
#define all(x) x.begin(), x.end()
using ll = long long;
using vb = vector<bool>;
using vvb = vector<vb>;
using vi = vector<int>;
using vvi = vector<vi>;
using vl = vector<ll>;
using vvl = vector<vl>;
using vc = vector<char>;
using vvc = vector<vc>;
using vs = vector<string>;
// Odd Even /////////////////////////////////////////////
bool odd(ll num) { return ((num & 1) == 1); }
bool even(ll num) { return ((num & 1) == 0); }
//////////////////////////////////////////////////////// Prime
bool isPrime(int n)
{
for (int i = 2; i * i <= n; i++)
{
if (n % i == 0)
return false;
}
return true;
}
///////////////////////////////////////////////////////// LCM GCD
long long gcd(long long a, long long b)
{
while (b != 0)
{
long long temp = b;
b = a % b;
a = temp;
}
return a;
}
long long lcm(long long a, long long b)
{
return (a / gcd(a, b)) * b;
}
////////////////////////////////////////////////////////// SQR ROOT
long long sqrt(long long x)
{
long long s = 0, e = 2e9, res = s;
while (s <= e)
{
long long m = (s + e) / 2;
if (m * m <= x)
res = m, s = m + 1;
else
e = m - 1;
}
return res;
}
////////////////////////////////////////////////////////// BINOMIAL COEFF
vl fact(2e5 + 5, 1);
ll binPow(ll a, ll b)
{
if (b == 0)
return 1;
if (b == 1)
return a;
ll ret = binPow(a, b / 2);
if (b % 2 == 0)
return (ret * ret) % mod;
return ((ret * ret) % mod * a) % mod;
}
ll inv(ll a)
{
return (binPow(a, mod - 2) % mod + mod) % mod;
}
ll binom(ll a, ll b)
{
if (b < 0 or a < 0)
return 0;
return (((fact[a] * inv(fact[b])) % mod * inv(fact[a - b])) % mod + mod) % mod;
}
/*
vi a(n);
for(int i=0; i<n; i++){
cin>>a[i];
}
*/
#define cno cout << "NO\n"
#define cyes cout << "YES\n"
/*----------------------------------------------------------------------------*/
void solve()
{
int n;
cin >> n;
string a;
cin >> a;
int m;
cin >> m;
string b, c;
cin >> b >> c;
deque<char> ans(a.begin(), a.end());
for (int i = 0; i < m; i++)
{
if (c[i] == 'D')
{
ans.push_back(b[i]);
}
else
{
ans.push_front(b[i]);
}
}
for (char ch : ans)
cout << ch;
cout << nl;
}
/*
Vlad and Dima have been assigned a task in school for their English class. They were given two strings a
and b
and asked to append all characters from b
to string a
in any order. The guys decided to divide the work between themselves and, after lengthy negotiations, determined who would add each character from string b
to a
.
Due to his peculiarities, Vlad can only add characters to the beginning of the word, while Dima can only add them to the end. They add characters in the order they appear in string b
. Your task is to determine what string Vlad and Dima will end up with.
Input
Each test consists of several test cases. The first line contains a single integer t
(1≤t≤1000
) — the number of test cases. The description of the test cases follows.
The first line contains an integer n
(1≤n≤10
) — the length of the string a
.
The second line contains the string a
, consisting of lowercase letters of the English alphabet.
The third line contains an integer m
(1≤m≤10
) — the length of the strings b
and c
.
The fourth line contains the string b
, consisting of lowercase letters of the English alphabet.
The fifth line contains the string c
, consisting of the characters 'V' and 'D' — the distribution of the characters of string b
between Dima and Vlad. If ci
= 'V', then the i
-th letter is added by Vlad; otherwise, it is added by Dima.
Output
For each test case, output the string that will result from Dima and Vlad's work.
Example
InputCopy
4
2
ot
2
ad
DV
3
efo
7
rdcoecs
DVDVDVD
3
aca
4
bbaa
DVDV
3
biz
4
abon
VVDD
OutputCopy
dota
codeforces
abacaba
babizon
Note
In the first test case, there is initially a string ot
. Then Dima appends the character a
to the end of the string, resulting in ota
, and Vlad appends the last character, resulting in dota
.
In the second test case, the string will change as follows: efo→efor→defor→deforc→odeforc→odeforce→codeforce→codeforces
In the third test case: aca→acab→bacab→bacaba→abacaba
In the fourth test case: biz→abiz→babiz→babizo→babizon
*/
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int t = 1;
cin >> t;
while (t--)
solve();
}