- Published on
Codeforces Round (2021-04-29)
- Authors

- Name
- Zhiheng Wang
A
#include <cstdlib>
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int main() {
int t;
cin >> t;
while(t--) {
int r, b, d;
cin >> r >> b >> d;
if(r > b) swap(r, b);
if(r <= b && 1ll * b <= 1ll * (1 + d) * r) cout << "YES" << endl;
else cout << "NO" << endl;
}
return 0;
}
B
#include <cstdlib>
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int main() {
int t;
cin >> t;
while(t--) {
int n, m, k;
cin >> n >> m >> k;
if(k == n * m - 1) cout << "YES" << endl;
else cout << "NO" << endl;
}
return 0;
}
C
#include <cstdlib>
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;
typedef long long ll;
const int maxn = 2e5 + 17;
int n, u[maxn];
vector<ll> v[maxn];
ll s[maxn];
int sz[maxn];
bool cmp(ll a, ll b) {
return a > b;
}
int main() {
int T;
scanf("%d", &T);
while(T--) {
scanf("%d", &n);
for(int i = 1; i <= n; i++) {
s[i] = 0;
v[i].clear();
sz[i] = 0;
}
for(int i = 1; i <= n; i++) scanf("%d", &u[i]);
for(int i = 1; i <= n; i++) {
int tmp; scanf("%d", &tmp);
v[u[i]].push_back(1ll * tmp);
sz[u[i]]++;
}
for(int i = 1; i <= n; i++) {
int t = sz[i];
sort(v[i].begin(), v[i].end(), cmp);
// for(int j = 0; j < t; j++) printf("%d%c", v[i][j], " \n"[j == t - 1]);
for(int j = 1; j < t; j++) v[i][j] = v[i][j] + v[i][j - 1];
for(int j = 1; j <= t; j++) {
s[j] += v[i][t / j * j - 1];
}
}
for(int i = 1; i <= n; i++) printf("%lld%c", s[i], " \n"[i == n]);
}
return 0;
}
D
#include <cstdlib>
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;
typedef long long ll;
const int maxn = 5e3 + 17;
int n;
ll a[maxn], b[maxn], f[maxn][maxn], ans;
bool cmp(ll a, ll b) {
return a > b;
}
int main() {
cin >> n;
for(int i = 1; i <= n; i++) cin >> a[i];
for(int i = 1; i <= n; i++) cin >> b[i];
for(int i = 1; i <= n; i++) f[1][1] += a[i] * b[i];
for(int i = 2; i <= n; i++) f[i][i] = f[1][1];
ans = f[1][1];
// cout << ans << endl;
for(int l = 1; l < n; l++) {
int r = l + 1;
f[l][r] = f[1][1] - a[l] * b[l] - a[r] * b[r] + a[l] * b[r] + a[r] * b[l];
ans = max(ans, f[l][r]);
}
for(int i = 3; i <= n; i++) {
for(int l = 1; l + i - 1 <= n; l++) {
int r = l + i - 1;
f[l][r] = f[l + 1][r - 1] - a[l] * b[l] - a[r] * b[r] + a[l] * b[r] + a[r] * b[l];
ans = max(ans, f[l][r]);
}
}
// cout << f[3][5] << endl;
cout << ans << endl;
return 0;
}