Pagini recente » Cod sursa (job #1135073) | Cod sursa (job #1221242) | Cod sursa (job #2234477) | Cod sursa (job #3141887) | Cod sursa (job #923797)
Cod sursa(job #923797)
#include <fstream>
using namespace std;
ifstream cin("nivele.in");
ofstream cout("nivele.out");
const char *mm[2] = {"NU","DA"};
const int nmax = int(5e4 ) + 2;
int T, N;
int A[nmax];
bool checkOdd() {
if(A[1] == A[2]) {
bool seen = false;
for(int i = 3;i < N;) {
if(!seen && A[i] != A[i + 1]) {
i++;
seen = true;
} else
if(A[i] == A[i + 1]) {
i += 2;
} else {
return false;
}
}
if(!seen)
seen |= A[N] == A[N - 1];
if(seen) {
return true;
}
return false;
} else {
for(int i = N;i > 1;i -= 2) {
if(A[i] != A[i - 1]) {
return false;
}
}
}
return true;
}
bool checkEven() {
for(int i = 1;i <= N;i += 2) {
if(A[i] != A[i + 1]) {
return false;
}
}
return true;
}
int main()
{
int T;
for(cin>>T;T;T--) {
cin>>N;
for(int i = 1;i <= N;i++) {
cin>>A[i];
}
if(N & 1) {
cout<<mm[checkOdd()]<<"\n";
} else {
cout<<mm[checkEven()]<<"\n";
}
}
return 0;
}