難得一見的大水題。
隨便亂搞就AC了。
#include <cmath>
#include <cstdio>
#include <cstring>
inline int read()
{
int x = 0, f = 1, t = getchar();
while(t < '0' || t > '9') t == '-' ? f = -1 : 0, t = getchar();
while(t >= '0' && t <= '9') x = (x<<1) + (x<<3) + t - '0', t = getchar();
return x * f;
}
const int maxn = 10005;
int n, a[maxn], ans[maxn], can[maxn];
int main()
{
register int i, sum = 0, use = 0;
n = read();
for(i = 1; i <= n; ++i)
sum += a[i] = read();
for(i = 1; i <= n; ++i)
{
a[i] *= 100;
can[i] = a[i] % sum;
use += ans[i] = a[i] / sum;
}
use = 100-use;
for(i = 1; i <= n; ++i)
{
if(can[i] && use)
{
use--;
ans[i]++;
}
}
for(int i = 1; i <= n; ++i)
printf("%d ", ans[i]);
return 0;
}