Cod sursa(job #632476)

Utilizator alisssiaMititelu Andra alisssia Data 11 noiembrie 2011 11:13:39
Problema Tm Scor 0
Compilator cpp Status done
Runda arhiva-teme-fmi Marime 1.23 kb
// tm.cpp : Defines the entry point for the console application.
//

#include<list>
#include<fstream>
using namespace std;
int T;
list<int> l;

int valid(char *s){
	l.clear();
	int stare=1;
	for(int i=0;i<strlen(s);i++){
		if(s[i]=='a' && (stare==2 || stare==3)) return 0;
		if(s[i]=='b' && stare==3) return 0;
		if(s[i]=='c' && stare==1) return 0;
		if(s[i]=='b' && stare==1) stare=2;
		if(s[i]=='c' && stare==2) stare=3;
	}
	int i=0,more=0;
	while(i<strlen(s) && s[i]=='a') {l.push_front(1);i++;}
	if(i==strlen(s)) return 1;
	else if(s[i]!='b') return 0;
	while(i<strlen(s) && s[i]=='b') {
		l.push_front(2);
		i++;
		if(l.back()==1) l.pop_back();
		else more=1;
	}
	if(l.back()==2  && more==0) return 1;	 			
	if(i==strlen(s)) return 0;
	else if(s[i]!='c') return 0;
	while(l.back()!=2) l.pop_back();
	more=0;
	while(i<strlen(s) && s[i]=='c'){
		l.push_front(3);
		i++;
		if(l.back()==2) l.pop_back();
		else more=1;
	}
	if(l.back()==3 && more==0) return 1;
	else return 0;
}




int main()
{
	ifstream in("tm.in");
	ofstream out("tm.out");
	in>>T;
	char s[1001];
	for(int i=0;i<T;i++){
		in>>s;
		if(valid(s)) out<<"DA\n";
		else out<<"NU\n";
	}
	in.close();
	out.close();

	return 0;
}