//SRM496 next_permutation() STL function ,perfict use! #include <vector> #include <algorithm> #include <iterator> #include <string.h> #include <stdio.h> #include <stdlib.h> #include <iostream> using namespace std; struct TheMoviesLevelTwoDivTwo { vector <int> find(vector <int> length, vector <int> scary) { const int n = length.size(); int sum=0,max=0; vector<int>v(n),d(n); int i; for (i=0;i<d.size();i++) d[i] = i; do { sum=0; int s = 74; for (i=0;i<n;i++) { if (s>=scary[ d[i] ]) { if (s+47>=length[ d[i] ]) { sum += length[ d[i] ]; s = s+47-length[d[i]]; } else { sum += s+47; break; } } else { sum+=s; break; } } if (sum > max) { max = sum; v = d; } }while (next_permutation(d.begin(),d.end())); cout<<"max="<<max<<endl; return v; } };