Pagini recente » Cod sursa (job #2602944) | Cod sursa (job #1055287) | Cod sursa (job #2693826) | Cod sursa (job #3141685) | Cod sursa (job #18491)
Cod sursa(job #18491)
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int N_MAX = 56;
const int T_MAX = 512;
int v1[N_MAX * T_MAX], v2[N_MAX * T_MAX];
long long rez1[T_MAX], rez2[T_MAX];
int main()
{
freopen("amlei.in", "r", stdin);
freopen("amlei.out", "w", stdout);
int N, T, U, i, j;
while (scanf("%d %d %d\n", &N, &T, &U) != EOF) {
memset(rez1, 0, sizeof(rez1));
memset(rez2, 0, sizeof(rez2));
for (i = 1; i <= N * T; i ++) {
scanf("%d ", &v1[i]);
}
for (i = 1; i <= N * U; i ++) {
scanf("%d ", &v2[i]);
}
int k = 1;
for (i = 1; i <= T * N; i += N) {
for (j = i; j < i + N; j ++) {
if (v1[j] > 0) {
rez1[k] |= (1 << (v1[j] % 64));
}
}
k ++;
}
k = 1;
for (i = 1; i <= U * N; i += N) {
for (j = i; j < i + N; j ++) {
if (v2[j] > 0) {
rez2[k] |= (1 << (v2[j] % 64));
}
}
k ++;
}
sort(rez1 + 1, rez1 + T + 1);
sort(rez2 + 1, rez2 + U + 1);
for (i = 2; i <= T; i ++) {
if (rez1[i] == rez1[i - 1]) {
rez1[i] = -1;
}
}
for (i = 2; i <= U; i ++) {
if (rez2[i] == rez2[i - 1]) {
rez2[i] = -1;
}
}
for (i = 0, j = 0; i <= T && j <= U;) {
while (rez1[i] == -1) {
i ++;
}
while (rez2[j] == -1) {
j ++;
}
if (rez1[i] != rez2[j]) {
printf("NU\n");
break;
} else {
i ++, j ++;
}
}
if (i == T + 1 && j == U + 1) {
printf("DA\n");
}
}
return 0;
}