Cod sursa(job #2217964)

Utilizator Lazar_LaurentiuLazar Laurentiu Lazar_Laurentiu Data 2 iulie 2018 19:14:10
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <iostream>
#include <fstream>
#define MAX 10010

using namespace std;

int t,n;
int a[MAX];
string s,sa;
bool rez(string s){
  for(int i=0;i<(int)s.size();i++){
    if(s.size()>n)return 0;
    if(s[i]>='1'&&s[i]<='3')
      if(s[i]-'0'!=a[i])return 0;
    if(s[i]=='A'){
      sa=a[i]+'0';
      s.replace(i,1,sa);
    } else if(s[i]=='B'){
      if(a[i]==1)sa="1A3AC";
      else if(a[i]==2)sa="2B";
      else return 0;
      s.replace(i,1,sa);
    } else if(s[i]=='C'){
      if(a[i]==1)sa="12A";
      else if(a[i]==2)sa="2";
      else sa="3BC";
      s.replace(i,1,sa);
    }
  }
  for(int i=0;i<s.size();i++)
    if(s[i]-'0'!=a[i])return 0;
  if(s.size()!=n)return 0;
  return 1;
}

int main()
{
    ifstream f ("perle.in");
    ofstream g ("perle.out");
    f>>t;
    while(t--){
      f>>n;
      for(int i=0;i<n;i++)f>>a[i];
      g<<(rez("A")||rez("B")||rez("C"))<<'\n';
    }
    f.close ();
    g.close ();
    return 0;
}