Pagini recente »
Istoria paginii runda/laborator9d_24.01
|
Diferențe pentru runda/tema17-juniori-2014-2015 între reviziile 2 și 3
|
Istoria paginii runda/2015-10-27-clasa-6-tema-6
|
Atașamentele paginii Clasament 2022_11_bkt
|
Cod sursă (job #93582)
Cod sursă (job
#93582)
//Iisuse miluieste - ma
#include<fstream>
#define GOD 500000
using namespace std;
int main()
{
ifstream f("bart.in");
ofstream g("bart.out");
char p[ GOD ];
int pi[ GOD ] , k, i , q, m;
i = 0;
while(!f.eof())
{
f>>p[ i ];
i ++;
}
f.close();
k = 0;
pi[ 0 ] = 0;
for( q = 1; q < i ; q ++ )
{
while(( k > 0 ) && ( p[ k ] != p[ q ]))
k = pi[ k - 1 ];
if( p[ k ] == p[ q ] )
k ++;
pi[ q ] = k;
}
m = 0;
pi[ 0 ] = 0;
for( q = 1; q < i - k ; q ++ )
{
while(( m > 0 ) && ( p[ m ] != p[ q ] ))
m = pi[ m - 1 ];
if( p[ q ] == p[ m ] )
m ++;
pi[ q ] = m;
}
if( m == 0 )
{
for( q = 0; q < i - k ; q ++ )
g<<p[ q ];
}
else
{
for( q = 0 ; q < m ; q ++ )
g<<p[ q ];
}
g.close();
return 0;
}