Cod sursa(job #355660)
Utilizator | Data | 11 octombrie 2009 21:09:13 | |
---|---|---|---|
Problema | Perle | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 3.33 kb |
#include <iostream>
#include <fstream>
#include <deque>
#include <algorithm>
//A=4, B=5, C=6
using namespace std;
int main() {
deque<int> E, Aux;
int n, lung, i, j, p;
fstream f1, f2;
f1.open("perle.in", ios::in);
f1>>n;
f2.open("perle.out", ios::out);
for(i=1; i<=n; i++) {
E.resize(0); Aux.resize(0);
f1>>lung;
for(j=1; j<=lung; j++) {
f1>>p;
E.push_back(p);
}
p=E.front();
if(p==1) {
Aux.push_back(5);
}
else if(p==2) {
Aux.push_back(5);
}
else if(p==3) {
Aux.push_back(6);
}
while(1) {
if(Aux.empty() || E.empty()) { break; }
else if(Aux.front()==E.front()) {
Aux.pop_front();
E.pop_front();
continue;
}
else if(Aux.front()==1 && E.front()!=1) { break; }
else if(Aux.front()==2 && E.front()!=2) { break; }
else if(Aux.front()==3 && E.front()!=3) { break; }
else if(Aux.front()==4) {
Aux.pop_front();
E.pop_front();
continue;
}
else if(Aux.front()==5 && E.front()==1) {
Aux.pop_front();
E.pop_front();
Aux.push_front(6);
Aux.push_front(4);
Aux.push_front(3);
Aux.push_front(4);
continue;
}
else if(Aux.front()==5 && E.front()==2) {
Aux.pop_front();
E.pop_front();
Aux.push_front(5);
continue;
}
else if(Aux.front()==5 && E.front()==3) {
break;
}
else if(Aux.front()==6 && E.front()==1) {
Aux.pop_front();
E.pop_front();
Aux.push_front(4);
Aux.push_front(2);
continue;
}
else if(Aux.front()==6 && E.front()==2) {
Aux.pop_front();
E.pop_front();
continue;
}
else if(Aux.front()==6 && E.front()==3) {
Aux.pop_front();
E.pop_front();
Aux.push_front(6);
Aux.push_front(5);
continue;
}
}
if(Aux.empty() && E.empty()) {
f2<<"1"<<endl;
}
else {
f2<<"0"<<endl;
}
}
f1.close();
f2.close();
return 0;
}