//提出#2751に書いてある個人用メモは嘘です気にしないでくださいごめんなさい #include #include #include #include #include #include #include #include #include using namespace std; int main(){ int n; cin >> n; vector l(n); for(int i=0; i> Q; vector k(Q); for(int i=0; i > pq; for(int i=0; i ans(m+1); //cut[i] := i番目の棒をいくつにカットしたか vector cut(n,1); for(int i=1; i<=m; ++i){ //更に1つ切り出そうとした場合に一番長く切り出せる棒 pair p = pq.top(); pq.pop(); double L = p.first; int id = p.second; //i個にカットすると最大の長さはLとなる ans[i] = L; //cut[id]個に切られている棒を更に切って(cut[id]+1)個切り出したい cut[id] += 1; //棒[id]から(cut[id]+1)個取り出すとした場合の長さは //l[id] / (cut[id]+1) pq.push( make_pair( l[id]/(double)(cut[id]), id ) ); } //よくわからんぽよ for(int i=0; i