#include #include #include #include #include using namespace std; int N, K; string S; vector lefts; vector used; int allLeft; struct Part{ int I; inline char at(int i) const { return S[(N+i+I)%N]; } inline int left() const { //int l = 0; //for(int i=0; i p.left(); for(int i=0; i p.at(-1); } void print() const { //cout << I << ' '; for(int i=0; i parts; /* 4 3 acdb - bac 6 2 aababa - ab 10 4 abaaabaaba - aaba */ int main(){ cout.sync_with_stdio(false); cin.sync_with_stdio(false); cin >> N >> K >> S; used.resize(N,1); lefts.resize(N,K); allLeft = N; for(int i=0; i 0 && !parts.empty()){ //cout << allLeft << endl; Part p = *parts.begin(); parts.erase(parts.begin()); if(f || best.cmp(p)){ best = p; f = false; } for(int i=-K+1; i0) l-=sub; sub -= u; allLeft -= u; u = 0; } /*p.print(); cout << ' '; for(int i=0; i 0) parts.insert(p2);*/ } /*for(auto& p : parts) cout << p.I << ' '; cout << endl;*/ } //cout << endl; best.print(); cout << endl; return 0; }