Pagini recente » Cod sursa (job #1443589) | Cod sursa (job #1172133) | Cod sursa (job #1232247) | Cod sursa (job #1723248) | Cod sursa (job #1172305)
#include <fstream>
#include <cstring>
#define mod 40000061
using namespace std;
ifstream fin ("parpal.in");
ofstream fout ("parpal.out");
int n,test,p[2000020];
char ss[1000010],s[2000020];
int main()
{
fin>>test;
for (;test; --test)
{
fin>>ss+1;
s[1] = '0';
n = 1;
int nn = strlen (ss+1);
for (int i=1; i<=nn; ++i)
{
s[++n] = ss[i];
s[++n] = '0';
}
int start = 1, maxi = 0, current;
for (int i=1; i<=n; ++i)
{
if (i != 1)
current = min (p[2*maxi-i],2*maxi-i - (maxi-p[maxi]));
else current = 1;
for (; i+current <= n && i-current >= 1; ++current)
if (s[i+current] != s[i-current])
break;
p[i] = current;
if ((p[i]&1) && p[i] > 1 && i >= start)
{
if (i - p[i] < start)
start = i + p[i];
}
if (i + p[i] > maxi + p[maxi])
maxi = i;
}
if (start > n)
fout<<"DA";
else fout<<"NU";
fout<<"\n";
}
}