Cod sursa(job #355659)

Utilizator vladiiIonescu Vlad vladii Data 11 octombrie 2009 20:58:23
Problema Perle Scor 20
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;
}