Pagini recente » Cod sursa (job #1438343) | Cod sursa (job #2210123) | Cod sursa (job #2623425) | Cod sursa (job #1152143) | Cod sursa (job #483705)
Cod sursa(job #483705)
#include <iostream>
#include <algorithm>
#include <fstream>
#include <string>
using namespace std;
#define FILE_IN "perle.in"
#define FILE_OUT "perle.out"
int N;
int verif(char* sir)
{
// sir "A"
if (!sir[1]) return 1;
// sir "B" (inceputul)
int num2 = strspn(sir, "2");
if ((sir[num2] == '1') && (sir[num2+2] == '3') && (sir[num2+3] != 0))
sir += (num2+4);
// sir "C"
int necesare = 1;
while (necesare--)
{
if (!*sir) return 0;
// varianta 1
if ((*sir == '1') && (*(sir+1) == '2') && (*(sir+2) != 0))
{
sir += 3;
continue;
}
// varianta 2
if (*sir == '2')
{
sir++;
continue;
}
// varianta 3
sir++;
num2 = strspn(sir, "2");
if (!((sir[num2] == '1') && (sir[num2+2] == '3') && (sir[num2+3] != 0))) return 0;
sir += (num2+4);
necesare += 2;
}
if (*sir) return 0; // mai exista ceva dupa ultimul C
return 1;
}
int main()
{
ifstream fisIn(FILE_IN);
ofstream fisOut(FILE_OUT);
fisIn >> N;
char linie[10100];
for (int i=0; i<N; i++)
{
int L;
fisIn >> L;
for (int j=0; j<L; j++)
{
int X;
fisIn >> X;
linie[j] = 48+X;
}
memset(linie+L, 0, 10100-L);
fisOut << verif(linie) << "\n";
}
}