SRM 502 Div2 Medium

9桁の順列からsuffix xに合致する確率を求める.
前処理として入力suffixの中で重複している(あるいは包含関係にある)ものを見つける.
後は単純に確立を足し合わせるだけ.

class TheLotteryBothDivs {
public:
  double find(vector <string> goodSuffixes) {
    double res = 0;
    int n = goodSuffixes.size();
    vector<bool> valid(n, true);
    int i,j;
    for(i = 0; i < n; i++)if(valid[i]){
      for(j = 0; j < n; j++) if (i!=j && valid[j]){
          if(goodSuffixes[i].size() <= goodSuffixes[j].size() &&
             goodSuffixes[j].substr(goodSuffixes[j].size()-goodSuffixes[i].size()) == goodSuffixes[i]){
            valid[j] = false;
          }
      }
    }
    for(i = 0; i < n; i++) if (valid[i]){
        // cout << pow(10.0, (double)(goodSuffixes[i].size())) << endl;
      res += 1/pow(10.0, (double)(goodSuffixes[i].size()));
    }
    return res;
  }
};