codeforces: add solutions for round 923
This commit is contained in:
parent
c8a967dcaa
commit
dea3af5d33
11 changed files with 416 additions and 0 deletions
1
codeforces/.gitignore
vendored
Normal file
1
codeforces/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
main
|
3
codeforces/round-923/readme.md
Normal file
3
codeforces/round-923/readme.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Round 923
|
||||||
|
|
||||||
|
[Contest](https://codeforces.com/contest/1927/)
|
5
codeforces/round-923/task-a/Makefile
Normal file
5
codeforces/round-923/task-a/Makefile
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
all:
|
||||||
|
g++ main.cpp -o main
|
||||||
|
|
||||||
|
run:
|
||||||
|
./main
|
29
codeforces/round-923/task-a/main.cpp
Normal file
29
codeforces/round-923/task-a/main.cpp
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int t;
|
||||||
|
cin >> t;
|
||||||
|
for (int i = 0; i < t; i++) {
|
||||||
|
size_t n;
|
||||||
|
cin >> n;
|
||||||
|
|
||||||
|
std::string buffer;
|
||||||
|
cin >> buffer;
|
||||||
|
|
||||||
|
int first_b = -1;
|
||||||
|
int last_b = -1;
|
||||||
|
|
||||||
|
for (int j = 0; j < n; j++) {
|
||||||
|
if (buffer[j] == 'B') {
|
||||||
|
if (first_b == -1) {
|
||||||
|
first_b = j;
|
||||||
|
}
|
||||||
|
last_b = j;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << last_b - first_b + 1 << endl;
|
||||||
|
}
|
||||||
|
}
|
62
codeforces/round-923/task-a/readme.md
Normal file
62
codeforces/round-923/task-a/readme.md
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
# A. Make it White
|
||||||
|
|
||||||
|
[Codeforces.com](https://codeforces.com/contest/1927/problem/A)
|
||||||
|
|
||||||
|
You have a horizontal strip of n cells. Each cell is either white or black.
|
||||||
|
|
||||||
|
You can choose a continuous segment of cells once and paint them all white. After this action, all the black cells in this segment will become white, and the white ones will remain white.
|
||||||
|
|
||||||
|
What is the minimum length of the segment that needs to be painted white in order for all n cells to become white?
|
||||||
|
|
||||||
|
## Input
|
||||||
|
|
||||||
|
The first line of the input contains a single integer t
|
||||||
|
(1 ≤ t ≤ 104) — the number of test cases. The descriptions of the test cases follow.
|
||||||
|
|
||||||
|
The first line of each test case contains a single integer n
|
||||||
|
(1 ≤ n ≤ 10) — the length of the strip.
|
||||||
|
|
||||||
|
The second line of each test case contains a string s, consisting of n characters,
|
||||||
|
each of which is either 'W' or 'B'. The symbol 'W' denotes a white cell, and 'B' — a black one.
|
||||||
|
It is guaranteed that at least one cell of the given strip is black.
|
||||||
|
|
||||||
|
|
||||||
|
## Output
|
||||||
|
|
||||||
|
For each test case, output a single number — the minimum length of a continuous segment of cells that needs to be painted white in order for the entire strip to become white.
|
||||||
|
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
Input
|
||||||
|
```
|
||||||
|
8
|
||||||
|
6
|
||||||
|
WBBWBW
|
||||||
|
1
|
||||||
|
B
|
||||||
|
2
|
||||||
|
WB
|
||||||
|
3
|
||||||
|
BBW
|
||||||
|
4
|
||||||
|
BWWB
|
||||||
|
6
|
||||||
|
BWBWWB
|
||||||
|
6
|
||||||
|
WWBBWB
|
||||||
|
9
|
||||||
|
WBWBWWWBW
|
||||||
|
```
|
||||||
|
|
||||||
|
Output
|
||||||
|
```
|
||||||
|
4
|
||||||
|
1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
4
|
||||||
|
6
|
||||||
|
4
|
||||||
|
7
|
||||||
|
```
|
5
codeforces/round-923/task-b/Makefile
Normal file
5
codeforces/round-923/task-b/Makefile
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
all:
|
||||||
|
g++ main.cpp -o main
|
||||||
|
|
||||||
|
run:
|
||||||
|
./main
|
41
codeforces/round-923/task-b/main.cpp
Normal file
41
codeforces/round-923/task-b/main.cpp
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
string alph = "abcdefghijklmnopqrstuvwxyz";
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int t;
|
||||||
|
cin >> t;
|
||||||
|
|
||||||
|
int used_chars[26];
|
||||||
|
|
||||||
|
for (int k = 0; k < t; k++) {
|
||||||
|
int n;
|
||||||
|
cin >> n;
|
||||||
|
|
||||||
|
int* s = new int[n];
|
||||||
|
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
cin >> s[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < 26; i++) {
|
||||||
|
used_chars[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
for (int j = 0; j < 26; j++) {
|
||||||
|
if (used_chars[j] == s[i]) {
|
||||||
|
cout << alph[j];
|
||||||
|
used_chars[j]++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << endl;
|
||||||
|
|
||||||
|
delete[] s;
|
||||||
|
}
|
||||||
|
}
|
61
codeforces/round-923/task-b/readme.md
Normal file
61
codeforces/round-923/task-b/readme.md
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
# B. Following the String
|
||||||
|
|
||||||
|
[Codeforces.com](https://codeforces.com/contest/1927/problem/B)
|
||||||
|
|
||||||
|
Polycarp lost the string s of length n consisting of lowercase Latin letters, but he still has its trace.
|
||||||
|
|
||||||
|
The trace of the string s
|
||||||
|
is an array a of n integers, where ai is the number of such indices j (j<i) that si=sj. For example, the trace of the string abracadabra is the array `[0,0,0,1,0,2,0,3,1,1,4]`.
|
||||||
|
|
||||||
|
Given a trace of a string, find any string s from which it could have been obtained. The string s should consist only of lowercase Latin letters a-z.
|
||||||
|
|
||||||
|
|
||||||
|
## Input
|
||||||
|
|
||||||
|
The first line of the input contains a single integer t
|
||||||
|
(1 ≤ t ≤ 10^4) — the number of test cases. Then the descriptions of the test cases follow.
|
||||||
|
|
||||||
|
The first line of each test case contains a single integer n
|
||||||
|
(1 ≤ n ≤ 2*10^5) — the length of the lost string.
|
||||||
|
|
||||||
|
The second line of each test case contains n
|
||||||
|
integers a1,a2,…,an (0 ≤ ai < n) — the trace of the string. It is guaranteed that for the given trace, there exists a suitable string s.
|
||||||
|
|
||||||
|
It is guaranteed that the sum of n over all test cases does not exceed 2*10^5.
|
||||||
|
|
||||||
|
|
||||||
|
## Output
|
||||||
|
|
||||||
|
For each test case, output a string s
|
||||||
|
that corresponds to the given trace. If there are multiple such strings s, then output any of them.
|
||||||
|
|
||||||
|
The string s should consist of lowercase Latin letters a-z.
|
||||||
|
|
||||||
|
It is guaranteed that for each test case, a valid answer exists.
|
||||||
|
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
Input
|
||||||
|
```
|
||||||
|
5
|
||||||
|
11
|
||||||
|
0 0 0 1 0 2 0 3 1 1 4
|
||||||
|
10
|
||||||
|
0 0 0 0 0 1 0 1 1 0
|
||||||
|
1
|
||||||
|
0
|
||||||
|
8
|
||||||
|
0 1 2 3 4 5 6 7
|
||||||
|
8
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
```
|
||||||
|
|
||||||
|
Output
|
||||||
|
```
|
||||||
|
abracadabra
|
||||||
|
codeforces
|
||||||
|
a
|
||||||
|
aaaaaaaa
|
||||||
|
dijkstra
|
||||||
|
```
|
5
codeforces/round-923/task-d/Makefile
Normal file
5
codeforces/round-923/task-d/Makefile
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
all:
|
||||||
|
g++ main.cpp -o main
|
||||||
|
|
||||||
|
run:
|
||||||
|
./main
|
85
codeforces/round-923/task-d/main.cpp
Normal file
85
codeforces/round-923/task-d/main.cpp
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
const int UNKN = -1;
|
||||||
|
const int NF = -2;
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int t;
|
||||||
|
cin >> t;
|
||||||
|
|
||||||
|
for (int y = 0; y < t; y++) {
|
||||||
|
int len;
|
||||||
|
cin >> len;
|
||||||
|
int* arr = new int[len];
|
||||||
|
int* cache = new int[len];
|
||||||
|
for (int i = 0; i < len; i++) {
|
||||||
|
cin >> arr[i];
|
||||||
|
cache[i] = UNKN;
|
||||||
|
}
|
||||||
|
|
||||||
|
int q_num;
|
||||||
|
cin >> q_num;
|
||||||
|
|
||||||
|
for (int v = 0; v < q_num; v++) {
|
||||||
|
int l, r;
|
||||||
|
cin >> l >> r;
|
||||||
|
l--;
|
||||||
|
r--;
|
||||||
|
|
||||||
|
if (cache[l] == NF) {
|
||||||
|
// Every number will be the same.
|
||||||
|
cout << "-1 -1" << endl;
|
||||||
|
} else if (cache[l] != UNKN) {
|
||||||
|
// Cache hit.
|
||||||
|
if (cache[l] > r) {
|
||||||
|
// Another number is beyond our range;
|
||||||
|
cout << "-1 -1" << endl;
|
||||||
|
} else {
|
||||||
|
// Answer was cached
|
||||||
|
cout << l + 1 << " " << cache[l] + 1 << endl;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
bool found = false;
|
||||||
|
|
||||||
|
for (int i = l + 1; i <= r; i++) {
|
||||||
|
if (arr[i] != arr[l]) {
|
||||||
|
// Different number was found
|
||||||
|
cout << l+1 << " " << i+1 << endl;
|
||||||
|
found = true;
|
||||||
|
cache[l] = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cache[i] != UNKN) {
|
||||||
|
// CACHE HIT
|
||||||
|
if (cache[i] > r || cache[i] == NF) {
|
||||||
|
// Not found
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
// Answer was cached
|
||||||
|
cout << l + 1 << " " << cache[i] + 1 << endl;
|
||||||
|
found = true;
|
||||||
|
cache[l] = cache[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!found) {
|
||||||
|
// Nothing was found
|
||||||
|
cout << "-1 -1" << endl;
|
||||||
|
if (r == len - 1) {
|
||||||
|
// If we reached the end of our array and nothing was found,
|
||||||
|
// remember this.
|
||||||
|
cache[l] = NF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delete[] cache;
|
||||||
|
delete[] arr;
|
||||||
|
}
|
||||||
|
}
|
119
codeforces/round-923/task-d/readme.md
Normal file
119
codeforces/round-923/task-d/readme.md
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
# D. Find the Different Ones!
|
||||||
|
|
||||||
|
[Codeforces.com](https://codeforces.com/contest/1927/problem/D)
|
||||||
|
|
||||||
|
You are given an array a of n integers, and q queries.
|
||||||
|
|
||||||
|
Each query is represented by two integers l
|
||||||
|
and r (1≤l≤r≤n). Your task is to find, for each query, two indices i and j (or determine that they do not exist) such that:
|
||||||
|
|
||||||
|
- l ≤ i ≤ r
|
||||||
|
- l ≤ j ≤ r
|
||||||
|
- ai ≠ aj
|
||||||
|
|
||||||
|
In other words, for each query, you need to find a pair of different elements among al,al+1,…,ar, or report that such a pair does not exist.
|
||||||
|
|
||||||
|
|
||||||
|
## Input
|
||||||
|
|
||||||
|
The first line of the input contains a single integer t
|
||||||
|
(1≤t≤104) — the number of test cases. The descriptions of the test cases follow.
|
||||||
|
|
||||||
|
The first line of each test case contains a single integer n
|
||||||
|
(2≤n≤2⋅105) — the length of the array a.
|
||||||
|
|
||||||
|
The second line of each test case contains n
|
||||||
|
integers a1,a2,…,an (1≤ai≤106) — the elements of the array a.
|
||||||
|
|
||||||
|
The third line of each test case contains a single integer q
|
||||||
|
(1≤q≤2⋅105) — the number of queries.
|
||||||
|
|
||||||
|
The next q lines contain two integers each, l and r (1≤l<r≤n) — the boundaries of the query.
|
||||||
|
|
||||||
|
It is guaranteed that the sum of the values of n across all test cases does not exceed 2⋅105. Similarly, it is guaranteed that the sum of the values of q across all test cases does not exceed 2⋅105.
|
||||||
|
|
||||||
|
|
||||||
|
## Output
|
||||||
|
|
||||||
|
For each query, output two integers separated by space: i and j (l≤i,j≤r), for which ai≠aj. If such a pair does not exist, output i=−1 and j=−1.
|
||||||
|
|
||||||
|
You may separate the outputs for the test cases with empty lines. This is not a mandatory requirement.
|
||||||
|
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
Input
|
||||||
|
```
|
||||||
|
5
|
||||||
|
5
|
||||||
|
1 1 2 1 1
|
||||||
|
3
|
||||||
|
1 5
|
||||||
|
1 2
|
||||||
|
1 3
|
||||||
|
6
|
||||||
|
30 20 20 10 10 20
|
||||||
|
5
|
||||||
|
1 2
|
||||||
|
2 3
|
||||||
|
2 4
|
||||||
|
2 6
|
||||||
|
3 5
|
||||||
|
4
|
||||||
|
5 2 3 4
|
||||||
|
4
|
||||||
|
1 2
|
||||||
|
1 4
|
||||||
|
2 3
|
||||||
|
2 4
|
||||||
|
5
|
||||||
|
1 4 3 2 4
|
||||||
|
5
|
||||||
|
1 5
|
||||||
|
2 4
|
||||||
|
3 4
|
||||||
|
3 5
|
||||||
|
4 5
|
||||||
|
5
|
||||||
|
2 3 1 4 2
|
||||||
|
7
|
||||||
|
1 2
|
||||||
|
1 4
|
||||||
|
1 5
|
||||||
|
2 4
|
||||||
|
2 5
|
||||||
|
3 5
|
||||||
|
4 5
|
||||||
|
```
|
||||||
|
|
||||||
|
Output
|
||||||
|
```
|
||||||
|
2 3
|
||||||
|
-1 -1
|
||||||
|
1 3
|
||||||
|
|
||||||
|
2 1
|
||||||
|
-1 -1
|
||||||
|
4 2
|
||||||
|
4 6
|
||||||
|
5 3
|
||||||
|
|
||||||
|
1 2
|
||||||
|
1 2
|
||||||
|
2 3
|
||||||
|
3 2
|
||||||
|
|
||||||
|
1 3
|
||||||
|
2 4
|
||||||
|
3 4
|
||||||
|
5 3
|
||||||
|
5 4
|
||||||
|
|
||||||
|
1 2
|
||||||
|
4 2
|
||||||
|
1 3
|
||||||
|
2 3
|
||||||
|
3 2
|
||||||
|
5 4
|
||||||
|
5 4
|
||||||
|
```
|
Loading…
Reference in a new issue