Pagini recente » Cod sursa (job #2544839) | Cod sursa (job #753161) | Cod sursa (job #203170) | Cod sursa (job #2206770) | Cod sursa (job #189649)
Cod sursa(job #189649)
#include <iostream>
#include <fstream>
using namespace std;
int L;
int A[10001];
bool tryB(int i);
bool tryC(int i)
{
if (A[i] == 2) {
if (i == L-1)
return true;
return tryC(i+1);
}
if ((A[i] == 1) && (A[i+1] == 2)) {
if (i+2 == L-1)
return true;
return tryC(i+3);
}
if (A[i] == 3)
return tryB(i+1);
return false;
}
bool tryB(int i)
{
if (A[i] == 2)
return tryB(i+1);
if ((A[i] == 1) && (A[i+2] == 3))
return tryC(i+4);
return tryC(i+1);
}
bool canMake()
{
if (L == 1)
return true;
if (L == 2)
return false;
if (A[0] == 3)
return tryC(0);
return tryB(0);
}
int main(int argc, char *argv[])
{
FILE *fi = fopen("perle.in", "r");
int N;
fscanf(fi, "%d", &N);
ofstream fout("perle.out");
while (N--) {
fscanf(fi, "%d", &L);
for (int i(0); i < L; ++i)
fscanf(fi, "%d", A+i);
fout << canMake() << endl;
}
fout.close();
fclose(fi);
return 0;
}