Pagini recente » Cod sursa (job #222325) | Cod sursa (job #2391714) | Cod sursa (job #2023414) | Cod sursa (job #1376591) | Cod sursa (job #94640)
Cod sursa(job #94640)
#include <stdio.h>
#include <stdlib.h>
#include <stack>
using namespace std;
int num[10002];
int main(void)
{
FILE* fin;
FILE* fout;
fin = fopen("perle.in", "r");
fout = fopen("perle.out", "w");
stack<int> perle;
stack<int> transf;
int n;
fscanf(fin, "%d\n", &n);
for(int i=0;i<n;++i)
{
int l;
fscanf(fin, "%d ", &l);
for(int j=0;j<l;++j)
{
int k;
fscanf(fin, "%d ", &k);
num[j] = k;
}
if(l == 1)
{
fprintf(fout, "1\n");
}
else
{
while(!perle.empty())
perle.pop();
while(!transf.empty())
transf.pop();
for(int j=l-1;j>=0;--j)
perle.push(num[j]);
switch(num[0]) {
case 1:
if(l>=2) {
if(num[1] == 2)
transf.push('c');
else
transf.push('b');
}
else
{
transf.push('c');
}
break;
case 2:
transf.push('b');
break;
case 3:
transf.push('c');
break;
}
while(!perle.empty())
{
int p = perle.top();
int t = transf.top();
perle.pop();
transf.pop();
if(p != t && t != 'a')
{
if(t != 'b' && t != 'c')
break;
if(p == 1)
{
if(t == 'b')
{
transf.push('c');
transf.push('a');
transf.push(3);
transf.push('a');
}
if(t == 'c')
{
transf.push('a');
transf.push(2);
}
}
if(p == 2)
{
if(t == 'b')
transf.push('b');
else
break;
}
if(p == 3)
{
if(t == 'c')
{
transf.push('c');
transf.push('b');
}
else
break;
}
}
}
if(transf.empty())
fprintf(fout, "1\n");
else
fprintf(fout, "0\n");
}
}
fclose(fin);
fclose(fout);
return 0;
}