SRM 619 Div 2

ARCにせよSRMにせよ、記事書くのがだいぶ遅いのはなんとかなりませんかね。

Level 1 GoodCompanyDivTwo

Brute Forceで解ける問題っぽいです。システムテストで落とされました。
superior[i] = superior[j]でworkType[i] = workType[j]、同じ上司を持ってる二人が
同じ仕事でも多様性はあるらしいです。たぶん。
set使うと楽。set自体初めて利用した。
http://www.cplusplus.com/reference/set/set/
https://sites.google.com/site/cpprefjp/reference/set
http://episteme.wankuma.com/stlprog/container.html#container

Level 2 ChooseTheBestOne

後で解いた。何回か同じような問題を見たことがある。DPで解けるらしいが、DPで解いた訳ではないはず。

class ChooseTheBestOne{
public:
int countNumber(int N){
  int n = N;
  vector<int> v;
  long long  t = 1, s = 0;
  for(int i = 0; i < n; i++) v.push_back(i+1);
  for(int i = 0; i < n-1; i++){
    s += (t*t*t-1) % (int)v.size();

    if(s >= (int)v.size()) s -= (int)v.size(); 
    v.erase(v.begin()+s);
    t++;
  }
  return v.back();
}

こんな感じかな。

Level 3 EmployManager

kmjpさんみたいな解法。
どうやって思いつくの?
これすごいと思う。