27 const std::vector< std::pair<int,int> > &
get(
int n)
30 std::map<int, const std::vector< std::pair<int,int> > >::iterator it;
32 if (it != cache.end())
40 std::vector< std::pair<int,int> > perm;
41 std::vector<bool> done(n,
false);
42 std::vector<int> dist(n);
48 if (done[i]) last_true = i;
49 dist[i] = (i-last_true);
52 for (i=n-1; i>=0; i--)
54 if (done[i]) last_true = i;
55 dist[i] = (last_true-i) < dist[i] ? (last_true-i) : dist[i];
59 for (i=0; i<n; i++)
if (max_val < dist[i])
66 perm.push_back(std::make_pair(max_i,max_val));
72 printf(
" %d-%d", perm[i].first, perm[i].second);
75 cache.insert(std::make_pair(n,perm));
81 std::map<int, const std::vector< std::pair<int,int> > > cache;
Definition: BisectPerm.h:12