显示原始代码
#include <iostream>
#include <vector>
#include <algorithm>
#include <stdio.h>
#include <math.h>
#include <cstdio>
#include <cstring>
int maxn = 2005;
using namespace std;
struct guai_wu {
int a;
int b;
};
bool cmp(guai_wu g1, guai_wu g2) { return g1.a < g2.a; }
int main() {
int n;
cin >> n;
guai_wu g[n + 1];
for (int i = 1; i <= n; i++) {
cin >> g[i].a;
}
int b[n + 1];
for (int i = 1; i <= n; i++) {
cin >> g[i].b;
}
int m;
cin >> m;
sort(g + 1, g + n + 1, cmp);
int need = g[1].a;
int sum_b = 0;
for (int i = 1; i < n; i++) {
sum_b = g[i].b + sum_b;
if ((g[i].a + g[i].b) <= g[i + 1].a) {
if (g[i + 1].a - sum_b > need) {
need = g[i + 1].a - sum_b + 1;
}
}
}
int ys[m + 1];
for (int i = 1; i <= m; i++) {
cin >> ys[i];
}
int time[m + 1] = { 0 };
int power[maxn] = { 0 };
for (int i = 1; i <= maxn; i++) {
for (int j = 1; j <= i; j++) {
power[i] = min(j, i - j + 1) + power[i];
}
}
for (int i = 1; i <= m; i++) {
for (int j = 0; j <= maxn; j++) {
if (ys[i] + power[j] >= need) {
time[i] = j;
break;
}
}
}
for (int i = 1; i <= m; i++) {
cout << time[i] << " ";
}
return 0;
}