AtCoder Beginner Contest 239
A
#include <bits/stdc++.h>
using namespace std;
int main() {
int x;
scanf("%d", &x);
printf("%.10lf\n", sqrt((12800000 + x)) * sqrt(x));
return 0;
}
B
#include <bits/stdc++.h>
using namespace std;
int main() {
long long x;
scanf("%lld", &x);
if (x < 0) {
x *= -1;
if (x % 10 == 0) printf("%lld\n", x / 10 * -1);
else printf("%lld\n", (x / 10 + 1) * -1);
}
else printf("%lld\n", x / 10);
return 0;
}
C
#include <bits/stdc++.h>
using namespace std;
int x, y, x2, y2;
int dx[] = {1, 2, 2, 1, -1, -2, -2, -1};
int dy[] = {2, 1, -1, -2, -2, -1, 1, 2};
int main() {
scanf("%d%d%d%d", &x, &y, &x2, &y2);
bool flag = 0;
for (int i = 0; i < 8; i ++ ) {
int tx, ty;
tx = x + dx[i];
ty = y + dy[i];
if ((abs(tx - x2) == 2 && abs(ty - y2) == 1) || (abs(tx - x2) == 1 && abs(ty - y2) == 2)) {
flag = 1;
break;
}
}
if (flag) puts("Yes");
else puts("No");
return 0;
}
D
#include <bits/stdc++.h>
using namespace std;
int l1, r1, l2, r2;
int main() {
scanf("%d%d%d%d", &l1, &r1, &l2, &r2);
function<bool(int)> is_prime = [&](int x) {
for (int i = 2; i <= x / i; i ++ )
if (x % i == 0)
return false;
return true;
};
bool flag = 1;
for (int i = l1; i <= r1; i ++ ) {
int p = 0, q = 0;
for (int j = l2; j <= r2; j ++ ) {
if (is_prime(i + j)) p ++;
else q ++;
}
if (p == 0) {
flag = 0;
break;
}
}
if (flag) puts("Aoki");
else puts("Takahashi");
return 0;
}
E
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n, Q;
int w[N];
int c[N][20];
int h[N], e[N], ne[N], idx;
void add(int a, int b)
{
e[idx] = b, ne[idx] = h[a], h[a] = idx ++;
}
void dfs(int u, int fa)
{
vector<int> v;
v.push_back(w[u]);
for (int i = h[u]; i != -1; i = ne[i]) {
int j = e[i];
if (j == fa) continue;
dfs(j, u);
for (int k = 0; k < 20; k ++ ) {
if (c[j][k] == 0) break;
v.push_back(c[j][k]);
}
}
sort(v.begin(), v.end());
reverse(v.begin(), v.end());
for (int i = 0; i < v.size() && i < 20; i ++ )
c[u][i] = v[i];
}
int main() {
scanf("%d%d", &n, &Q);
memset(h, -1, sizeof h);
for (int i = 1; i <= n; i ++ ) scanf("%d", &w[i]);
for (int i = 1; i < n; i ++ ) {
int a, b;
scanf("%d%d", &a, &b);
add(a, b), add(b, a);
}
dfs(1, -1);
while (Q -- ) {
int root, k;
scanf("%d%d", &root, &k);
printf("%d\n", c[root][k - 1]);
}
return 0;
}