Заняття (14.03.2018) |
![]() |
Добавил(а) Administrator |
23.03.18 10:53 |
http://nvk26.lutsk.ua/cgi-bin/new-client?contest_id=59 school2018-1 … school2018-30 пароль 1 Задача http://codeforces.com/problemset/problem/550/A Два підрядка Дано рядок s. Потрібно визначити, чи існують в цьому рядку s два підрядка, якы не пертинаються "AB" і "BA" (ланцюжків можуть йти в будь-якому порядку). Вхідні дані На вхід подається рядок s довжиною від 1 до 105 символів, що складається з великих літер латинського алфавіту. Вихідні дані Виведіть "YES" (без лапок), якщо рядок s містить дві непересічні підрядка "AB" і "BA", і "NO" інакше Три варіанти розбирав ABA або ВАВ і АВ або ВА АВіВА ВАіАВ #include "iostream" #include "string.h" using namespace std; int main() char *s=new char [500000]; cin>>s; int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0; int i=1; while (i<strlen(s)) { if (((s[i-1]=='B' && s[i]=='A' && s[i+1]=='B') || (s[i-1]=='A' && s[i]=='B' && s[i+1]=='A') ) && e==0) {e=1;i=i+3;} if (((s[i-1]=='A' && s[i]=='B') || (s[i-1]=='B' && s[i]=='A')) && e==1 )f=1; if (s[i-1]=='A' && s[i]=='B' && a==0) {a=1;} if (s[i-1]=='B' && s[i]=='A' && a==1)b=1; if (s[i-1]=='B' && s[i]=='A' && c==0) {c=1;} if (s[i-1]=='A' && s[i]=='B' && c==1 )d=1; i++; if (a==1 && b==1) {cout<<"YES"<<endl;return 0;} else if (c==1 && d==1) {cout<<"YES"<<endl;return 0;} else if (f==1 && e==1) {cout<<"YES"<<endl;return 0;} } cout<<"NO"<<endl; /// return 0; } |