Pagini recente » Cod sursa (job #352533) | Cod sursa (job #3211517) | Cod sursa (job #746718) | Cod sursa (job #1359686) | Cod sursa (job #672420)
Cod sursa(job #672420)
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
//sir curent "BC"
string f(string sir_curent, string rezultat)
{
int i;
int k=0;
for(i=0;i<sir_curent.length();i++) {
if(sir_curent[i] == 'A') {
sir_curent[i] = rezultat[k];
k++;
}
else if(sir_curent[i] == 'B') {
if(rezultat[k] == '2') {
sir_curent[i] = rezultat[k];
k++;
string tmp = f("B",rezultat.substr(k));
k += tmp.length();
sir_curent = sir_curent.substr(0,i+1)+tmp+sir_curent.substr(i+1);
} else if(rezultat[k] == '1' && k < rezultat.length()-3 && rezultat[k+2] == '3') {
sir_curent[i] = rezultat[k];
if(sir_curent.length() > i+3) {
sir_curent[i+1] = rezultat[k+1];
sir_curent[i+2] = rezultat[k+2];
sir_curent[i+3] = rezultat[k+3];
} else {
sir_curent = sir_curent + rezultat[k+1] + rezultat[k+2] + rezultat[k+3];
}
k+=4;
i+=3;
string tmp = f("C",rezultat.substr(k));
k += tmp.length();
sir_curent = sir_curent.substr(0,i+1)+tmp+sir_curent.substr(i+1);
}
}
else if(sir_curent[i] == 'C') {
if(rezultat[k] == '2') {
sir_curent[i] = rezultat[k];
k++;
} else if(rezultat[k] == '1' && k < rezultat.length()-2 && rezultat[k+1] == '2') {
sir_curent[i] = rezultat[k];
if(sir_curent.length() > i+1) {
sir_curent[i+1] = rezultat[k+1];
} else {
sir_curent = sir_curent + rezultat[k+1];
}
i++;
if(sir_curent.length() > i+1) {
sir_curent[i+1] = rezultat[k+2];
} else {
sir_curent = sir_curent + rezultat[k+2];
}
k+=3;
i++;
} else if(rezultat[k] == '3') {
sir_curent[i] = rezultat[k];
k++;
string tmp = f("B",rezultat.substr(k));
k += tmp.length();
string tmp2 = f("C",rezultat.substr(k));
k += tmp2.length();
sir_curent = sir_curent.substr(0,i+1)+tmp+tmp2+sir_curent.substr(i+1);
}
}
}
return sir_curent;
}
bool perle(string rezultat)
{
string fA = f("A",rezultat);
if(fA == rezultat)
return true;
string fB = f("B",rezultat);
if(fB == rezultat)
return true;
string fC = f("C",rezultat);
if(fC == rezultat)
return true;
return false;
}
int main()
{
string tmp;
ifstream f("perle.in");
ofstream g("perle.out");
int n,i,nrc,j;
f>>n;
for(i=0;i<n;i++)
{
f>>nrc;
string s;
for(j=0;j<nrc;j++)
{
f>>tmp;
s += tmp;
}
g << perle(s) << endl;
}
f.close();
g.close();
return 0;
}