Educational Codeforces Round 123 (Rated for Div. 2)
A
#include <bits/stdc++.h>
using namespace std;
char s[10];
void solve()
{
scanf("%s", s + 1);
map<char, int> Map;
bool flag = 1;
for (int i = 1; i <= 6; i ++ ) {
if (s[i] <= 'z' && s[i] >= 'a') Map[s[i]] = 1;
else if (!Map[s[i] + 32]) flag = 0;
}
if (flag) printf("YES\n");
else printf("NO\n");
}
int main() {
int T;
scanf("%d", &T);
while (T -- ) solve();
return 0;
}
B
#include <bits/stdc++.h>
using namespace std;
int n;
int a[100];
void solve()
{
scanf("%d", &n);
for (int i = 1; i <= n; i ++ ) a[i] = n - i + 1;
for (int j = 1; j <= n; j ++ )
printf("%d ", a[j]);
printf("\n");
for (int i = 1; i < n; i ++ ) {
swap(a[i], a[i + 1]);
for (int j = 1; j <= n; j ++ )
printf("%d ", a[j]);
printf("\n");
swap(a[i], a[i + 1]);
}
}
int main() {
int T;
scanf("%d", &T);
while (T -- ) solve();
return 0;
}
C
#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int N = 5010;
int n, x;
int f[N], a[N];
void solve()
{
memset(f, 0xcf, sizeof f);
scanf("%d%d", &n, &x);
for (int i = 1; i <= n; i ++ ) scanf("%d", &a[i]);
for (int i = 1; i <= n; i ++ ) {
int sum = 0;
for (int j = i; j <= n; j ++ ) {
sum += a[j];
f[j - i + 1] = max(f[j - i + 1], sum);
}
}
for (int i = 0; i <= n; i ++ ) {
int ans = 0;
for (int j = 0; j <= n; j ++ )
ans = max(f[j] + min(j, i) * x, ans);
printf("%d ", ans);
}
printf("\n");
}
int main() {
int T;
scanf("%d", &T);
while (T -- ) solve();
return 0;
}
D
#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int N = 2e5 + 10, MOD = 998244353;
int n, m, k, Q;
int a[N], b[N];
void solve()
{
scanf("%d%d%d%d", &n, &m, &k, &Q);
for (int i = 1; i <= Q; i ++ ) scanf("%d%d", &a[i], &b[i]);
reverse(a + 1, a + 1 + Q);
reverse(b + 1, b + 1 + Q);
set<int> x, y;
LL ans = 1;
for (int i = 1; i <= Q; i ++ ) {
if ((x.count(a[i]) && y.count(b[i])) || x.size() == n || y.size() == m) continue;
x.insert(a[i]);
y.insert(b[i]);
ans = ans * k % MOD;
}
printf("%lld\n", ans);
}
int main() {
int T;
scanf("%d", &T);
while (T -- ) solve();
return 0;
}