- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 
                        #include <fstream>
#include <string>
#include <vector>
using namespace std;
int main()
{
    fstream in("z.in", ios::in);
    fstream out("z.out", ios::out);
    string s;
    in >> s;
    in.close();
    vector<size_t> z(s.length());
    z[0] = s.length();
    for (size_t i = 1, l = 0, r = 0, j = 0, k = 0; i < s.length(); (i > r) ? ((s[i + j] == s[j]) && ((j + i) < s.length()) ? ++j : (((z[l = i] = j, r = i + j - 1), j = 0), ++i)) : ((z[i - l] < r - i + 1) ? ((z[i] = z[i - l]), ++i) : (((s[r + k] == s[r - i + k]) && ((k + r) < s.length())) ? ++k : (((z[l = i] = r - i + k, r = r + k - 1), k = 1), ++i))));
    for(size_t i = 1; i < s.length(); ++i)
    {
        out << z[i] << " ";
    }
    out << flush;
    out.close();
    return 0;
}
                                 
        
            Z-функция в одну строчку. плод больного воображения и лишнего времени
        
        
P.S. лаба детектед
Так говоришь, будто это плохо.
3689