SRM322 div2
easy
やるだけ。
vector <int> derSeq(vector <int> a, int n) { int sz = a.size(); vector<int> ans = a; while(n--) { vector<int> tmp; for(int i = 1; i < sz; i++) { tmp.push_back(ans[i]-ans[i-1]); } ans = tmp; sz--; } return ans; }
medium
p <= 10^9, s <= 10^3 sz = 50なので、sum(i[0, sz), p[i]*s[i])=5*10^13でlong long型で支障はない.
long long bestGroup(vector <int> p, vector <int> s) { vector<pii> whole; for(int i = 0; i < p.size(); i++) { whole.push_back(pii(s[i], p[i])); } sort(whole.rbegin(), whole.rend() ); LL ans = 0; LL num = 0; for(int i = 0; i < whole.size(); i++) { num += whole[i].second; LL tmp = whole[i].first*num; ans = max(ans, tmp); //long long型の場合にも、使って問題ない.STLだもんね。 } return ans; }