And here is the Editorial!
We hope you liked the problems. Thanks everyone!
\[^-^]/
Don't forget to praise the sun!
Tutorial
Tutorial is loading...
Solution
#include <iostream>
using namespace std;
void solve() {
int n;
cin >> n;
int cnt[10] = {};
bool f = 0;
for (int i = 0; i < n; i++) {
int dig;
cin >> dig;
cnt[dig]++;
if (cnt[0] >= 3 && cnt[1] >= 1 && cnt[2] >= 2 &&
cnt[3] >= 1 && cnt[5] >= 1 && !f) {
cout << i + 1 << endl;
f = 1;
}
}
if (!f) cout << 0 << endl;
}
int main() {
int t;
cin >> t;
while (t--) {
solve();
}
}
Tutorial
Tutorial is loading...
Solution
#include <iostream>
#include <algorithm>
using namespace std;
void solve() {
int n, x;
cin >> n >> x;
int a[n];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a, a + n);
reverse(a, a + n);
int ans = 0;
for (int i = 0, cnt = 1; i < n; i++, cnt++) {
if (a[i] * cnt >= x) {
ans++;
cnt = 0;
}
}
cout << ans << endl;
}
int main() {
int t;
cin >> t;
while (t--) {
solve();
}
}
Tutorial
Tutorial is loading...
Solution
#include <iostream>
using namespace std;
void solve() {
int n;
cin >> n;
if (n % 2 == 0) {
cout << -1 << endl;
return;
}
for (int i = n; i > 0; i--) {
cout << i << ' ';
}
cout << endl;
}
int main() {
int t = 1;
cin >> t;
while (t--)
solve();
}
Tutorial
Tutorial is loading...
Solution
#include <iostream>
using namespace std;
void solve() {
long long n, m, k, l, r, mid;
cin >> n >> m >> k;
l = 0, r = m;
while (l + 1 < r) {
mid = (l + r) / 2;
if ((m / (mid + 1) * mid + m % (mid + 1)) * n >= k) {
r = mid;
} else {
l = mid;
}
}
cout << r << endl;
}
int main() {
int t = 1;
cin >> t;
while (t--) {
solve();
}
}
Tutorial
Tutorial is loading...
Solution
#include <iostream>
using namespace std;
const int MAXN = 10000001;
bool prime[MAXN];
void solve() {
int n, ans = 0;
cin >> n;
for (int i = 2; i <= n; i++) {
if (prime[i]) {
ans += n / i;
}
}
cout << ans << endl;
}
int main() {
for (int i = 0; i < MAXN; i++) prime[i] = 1;
prime[0] = prime[1] = 0;
for (int i = 2; i * i < MAXN; i++) {
if (!prime[i]) continue;
for (int j = i * i; j < MAXN; j += i)
prime[j] = 0;
}
int t;
cin >> t;
while (t--) {
solve();
}
}
Tutorial
Tutorial is loading...
Solution
#include <iostream>
using namespace std;
const int MAXN = 2010;
const int MOD = 998244353;
string s[MAXN];
int dp[MAXN][MAXN][2];
long long sdp[MAXN][MAXN][2];
int n, m, d;
long long getsum(int x, int y1, int y2, int f) {
long long res = sdp[x][y2][f];
if (y1) res -= sdp[x][y1 - 1][f];
return res;
}
int get(int i, int j, int f) {
if (s[i][j] != 'X') return 0;
long long res = 0;
if (i == n - 1) res++;
if (!f) {
res += getsum(i, max(0, j - d),
min(m - 1, j + d), 1);
res -= dp[i][j][1];
}
if (i < n - 1) {
res += getsum(i + 1, max(0, j - d + 1),
min(m - 1, j + d - 1), 0);
}
return res % MOD;
}
void solve() {
cin >> n >> m >> d;
for (int i = 0; i < n; i++) {
cin >> s[i];
}
for (int i = n - 1; i >= 0; i--) {
for (int f = 1; f >= 0; f--) {
for (int j = 0; j < m; j++) {
sdp[i][j][f] = dp[i][j][f] = get(i, j, f);
}
for (int j = 1; j < m; j++) {
sdp[i][j][f] += sdp[i][j - 1][f];
}
}
}
long long ans = 0;
for (int j = 0; j < m; j++) {
ans += dp[0][j][0];
}
cout << ans % MOD << endl;
}
int main() {
int t;
cin >> t;
while (t--) {
solve();
}
}
Tutorial
Tutorial is loading...
Solution
#include <iostream>
#include <vector>
using namespace std;
int s, k, p;
vector<bool> was1, was2;
void bfs() {
vector<int> v;
for (int i = 0; i < s; i++) {
if (was1[i])
v.push_back(i);
}
int q = 0;
while (q < v.size()) {
int x = v[q++];
int y = x + p * k;
if (y >= 0 && y <= s && !was1[y]) {
was1[y] = 1;
v.push_back(y);
}
}
}
void solve() {
cin >> s >> k;
if (s % k == 0) {
cout << k << endl;
return;
}
if (s > k * k) {
cout << max(1, k - 2) << endl;
return;
}
was1.resize(s + 1);
was2.resize(s + 1);
for (int i = 0; i <= s; i++) {
was1[i] = was2[i] = 0;
}
p = 1;
was1[k] = 1;
while (1) {
bfs();
if (was1[s]) {
cout << k << endl;
return;
}
k = max(k - 1, 1);
p *= -1;
for (int i = 0; i <= s; i++) {
was2[i] = 0;
}
for (int i = 0; i < s; i++) {
if (was1[i]) {
if (i + p * k >= 0 && i + p * k <= s) {
was2[i + p * k] = 1;
}
}
}
swap(was1, was2);
}
}
int main() {
int t;
cin >> t;
while (t--) {
solve();
}
}




