Pagini recente »
Borderou de evaluare (job #200870)
|
Borderou de evaluare (job #433471)
|
Borderou de evaluare (job #164549)
|
Borderou de evaluare (job #352743)
|
Cod sursă (job #696401)
Cod sursă (job
#696401)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream in("bart.in");
cin.rdbuf(in.rdbuf());
ofstream out("bart.out");
cout.rdbuf(out.rdbuf());
char sir[500000];
int nrCaractere = 0;
cin >> sir[nrCaractere];
while (!cin.eof())
{
nrCaractere++;
cin >> sir[nrCaractere];
}
sir[nrCaractere] = 0;
//cout << sir << endl;
//cout << nrCaractere << endl;
int* pi = new int[nrCaractere];
pi[0] = -1;
//cout << pi[0] << " ";
for (int i = 1; i < nrCaractere; i++)
{
pi[i] = pi[i - 1];
while (pi[i] != -1 && sir[pi[i] + 1] != sir[i])
{
pi[i] = pi[pi[i]];
}
if (sir[pi[i] + 1] == sir[i])
pi[i]++;
//cout << pi[i] << " ";
}
//cout << endl;
int lungimeMesaj = nrCaractere - 1 - pi[nrCaractere - 1];
for (int i = 0; i < lungimeMesaj; i++)
{
cout << sir[i];
}
cout << endl;
delete[] pi;
}