#include #include #include #include #include using namespace std; int N, K; string S; //vector left; vector used; int allLeft; struct Part{ int I; inline char at(int i) const { return S[(i+I)%N]; } inline int left() const { int l = 0; 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; allLeft = N; for(int i=0; i 0){ auto p = *parts.begin(); parts.erase(parts.begin()); if(f || best.cmp(p)){ best = p; f = false; } for(int i=0; i 0) parts.insert(p2); } //for(auto& p : parts) cout << p.I << ' '; //cout << endl; } //cout << endl; best.print(); cout /*<< ' ' << allLeft */ << endl; return 0; }