rt.
求调代码或指出错误。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n, w, a[101], p[101];
bool cmp(const int &x, const int &y) {
return x > y;
}
int main(){
scanf("%d%d", &n, &w);
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
sort(a + 1, a + n + 1, cmp);
for (int i = 1; i <= n; i++) {
if (!(a[i] % 2)) {
p[i] += a[i] / 2;
w -= a[i] / 2;
} else {
p[i] += a[i] / 2 + 1;
w -= (a[i] / 2 + 1);
}
if (w < 0) {
puts("-1");
return 0;
}
}
for (; w; )
for (int i = 1; i <= n && w; i++)
if (p[i] < a[i]) {
p[i]++;
w--;
}
for (int i = 1; i < n; i++)
if (p[i] < p[i + 1]) {
puts("-1");
return 0;
}
for (int i = 1; i <= n; i++)
printf("%d ", p[i]);
}