Pagini recente » Cod sursa (job #942461) | Cod sursa (job #2978720) | Cod sursa (job #1002347) | Cod sursa (job #1198315) | Cod sursa (job #1902317)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 500 + 5;
int n,t,u,a[50 *NMAX],b[50 * NMAX],A[50 * NMAX],B[NMAX * 50];
bool ap[110 + 5];
inline void precalc(int A[] , int a[], int &lung)
{
bool ok[NMAX];
memset(ok , false, sizeof(ok));
for (int i = 1; i<=n * lung; i += n)
ok[i] = true;
for (int i = 1; i <= n*lung; i += n)
{
if (ok[i] == false)
continue;
memset(ap , false, sizeof(ap));
for (int ii = i; ii <= i + n - 1; ++ii)
ap[a[ii]] = true;
for (int j = i + n; j<=n * lung; j += n)
{
bool Ok = true;
for (int jj = j; jj<= j + n - 1 && Ok == true; ++jj)
if(ap[a[jj]] == false)
Ok = false;
if (Ok == true)
ok[j] = false;
}
}
int lnou = 0;
int i ;
for (i = 1; i<=n*lung; ++i)
if (ok[i] == true)
{
int j;
for (j = i; j<= i + n - 1; ++j)
A[++lnou] = a[j];
i = j - 1;
}
lung = lnou / n;
}
int main()
{
ifstream f("amlei.in");
freopen("amlei.out","w",stdout);
f >> n >> t >> u;
do
{
for (int i = 1; i <= n * t; ++i)
{
f >> a[i];
a[i] += 52;
}
for (int i = 1; i <= n * u; ++i)
{
f >> b[i];
b[i] += 52;
}
for (int i = 1; i<= n * t ; i += n)
sort(a + i, a + i + n );
precalc(A , a , t);
precalc(B , b , u);
memcpy(a , A, sizeof(A));
memcpy(b , B, sizeof(B));
for (int i = 1; i<= n * u ; i += n)
sort(b + i, b + i + n );
bool fals = true;
for (int i = 1; i<=n * t && fals == true; i += n)
{
memset(ap , false, sizeof(ap));
for (int ii = i; ii<=i + n - 1; ++ii)
ap[a[ii]] = true;
bool OK = false;
for (int j = 1; j <= n * u; j += n)
{
bool Ok = true;
for (int jj = j; jj<= j + n - 1; ++jj)
if (ap[b[jj]] == false)
Ok = false;
if (Ok == true)
{
OK = true;
break;
}
}
if (OK == true)
continue;
else
{
printf("NU\n");
fals = false;
}
}
if (fals == false)
{
f >> n >> t >> u;
continue;
}
for (int i = 1; i<=n * u && fals == true; i += n)
{
memset(ap , false, sizeof(ap));
for (int ii = i; ii<=i + n - 1; ++ii)
ap[b[ii]] = true;
bool OK = true;
for (int j = 1; j <= n * t; j += n)
{
bool Ok = true;
for (int jj = j; jj<= j + n - 1; ++jj)
if (ap[a[jj]] == false)
Ok = false;
if (Ok == true)
{
OK = true;
break;
}
}
if (OK == true)
continue;
else
{
printf("NU\n");
fals = false;
}
}
if (fals == true)
printf("DA\n");
f >> n >> t >> u;
}
while(!f.eof());
return 0;
}