Ma gandesc asa: combin sirul normal cu sirul reversed despartite de un caracter si construiesc suffix array-ul. Parcurg in ordine descrescatoare sufixele (de exemplu) si ma intereseaza suma tuturor LCP-urilor dintre sirul curent si cele de sub el, pe care o adun la solutie. La schimbarea indexului, va trebui sa modific LCP-urile de dedesubt, si am nevoie de inca o structura de date care sa-mi spuna cate valori mai mari decat o anumita valoare am si sa le transforme pe toate intr-o anumita valoare. M-am gandit aici la un arbore de intervale cu lazy update.
Indexul va fi intotdeauna pe un sufix al sirului reversed, iar suma LCP-urilor o voi lua doar din cele care apartin sirului normal.
S-ar putea sa ma complic tare, dar asta e ideea la care am ajuns.
Totusi, nu-mi dau seama inca cum voi elimina solutiile care nu sunt disjuncte.
