Pagini recente » Cod sursa (job #2751370) | Cod sursa (job #1003470) | Cod sursa (job #2344638) | Cod sursa (job #1436867) | Cod sursa (job #1559641)
#include <stdio.h>
#define Nadejde 10010
int pos, flag, len;
int s[Nadejde];
void A(), B(), C();
/** Perla magica "A". **/
void A() {
if (flag) {
return;
}
pos++;
}
/** Perla magica "B". **/
void B() {
if (flag) {
return;
}
if (s[pos] == 2) {
A();
B();
} else if ((s[pos] == 1) && (s[pos + 2] == 3)) {
pos++;
A();
pos++;
A();
C();
} else {
flag = 1;
}
}
/** Perla magica "C". **/
void C() {
if (flag) {
return;
}
if (s[pos] == 2) {
A();
} else if (s[pos] == 3) {
A();
B();
C();
} else if ((s[pos] == 1) && (s[pos + 1] == 2)) {
A();
A();
A();
} else {
flag = 1;
}
}
int main(void) {
int i, N, answer;
FILE *f = fopen("perle.in", "r");
freopen("perle.out", "w", stdout);
/* Citirea datelor si afisarea solutiei. */
for (fscanf(f, "%d", &N); N; N--) {
fscanf(f, "%d", &len);
for (i = 0; i < len; i++) {
fscanf(f, "%d", &s[i]);
}
/* Largim putin vectorul. */
for (i = answer = 0; i < 7; i++) {
s[i + len] = 0;
}
/* Pornim cu perla "A". */
flag = pos = 0;
A();
answer |= (!flag) & (pos == len);
/* Pornim cu perla "B". */
flag = pos = 0;
B();
answer |= (!flag) & (pos == len);
/* Pornim cu perla "C". */
flag = pos = 0;
C();
answer |= (!flag) & (pos == len);
fprintf(stdout, "%d\n", answer);
}
fclose(f);
fclose(stdout);
/// Multumim Doamne!
puts("Doamne ajuta!");
return 0;
}