P3536 [POI2012]BON-Vouchers
P3536 [POI2012]BON-Vouchers
POI 合集。
注意到对于一个固定的
因此,若当前需求为
const int N = 1e6 + 5;
int n, m, cnt, buc[N];
ll tot, ans[N], cur[N];
int main(){
cin >> m;
for(int i = 1; i <= m; i++) buc[read()] = 1;
n = read();
for(int i = 1; i <= n; i++) {
int k = read();
if(cur[k] * k >= N) {tot += k; continue;}
int rest = k;
while(rest) {
int p = (++cur[k]) * k;
if(p >= N) break;
if(buc[p] == 1) ans[++cnt] = tot + k - rest + 1;
if(buc[p] >= 0) buc[p] = -1, rest--;
} tot += k;
} cout << cnt << endl;
for(int i = 1; i <= cnt; i++) print(ans[i]), pc('\n');
return 0;
}