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;				       
  }