285
Pentru a exprima starea de spirit în comunicarea online sunt utilizate emoticonurile (cunoscute şi sub denumirea de smileys). În mod text, un smiley este reprezentat ca o secvenţă de caractere. În problema noastră, un smiley este o secvenţă care îndeplineşte simultan următoarele condiţii:
- secvenţa începe cu un caracter din mulţimea
{′:′,′;′,′>′,′8′} - urmează zero, unul sau mai multe caractere
′-′ (minus) - se termină cu unul, două sau mai multe caractere identice din mulţimea
{′(′, ′)′, ′[′, ′]′, ′D′, ′P′, ′O′, ′X′, ′3′}
De exemplu, fiecare dintre următoarele secvenţe este un smiley:
Exemplu
smiley.in
Salut! :) Ce mai faci? :----))) Ai aflat noutatile? ;-P -(eu ieri am aflat) >))))))!!!!!!!!
smiley.out
4
Explicație
Cele 4 secvenţe smiley din text sunt:
:)
:----)))
;-P
>))))))
#include <bits/stdc++.h>
using namespace std;
ifstream cin("smiley.in");
ofstream cout("smiley.out");
int main()
{
int cnt = 0;
char s[256] , a[] = "′:;>8" , b[] = "()[]DPOX3";
while(cin.getline(s , 256))
{
for(int i = 0 ; s[i]; i++)
{
if(strchr(a , s[i]))
{
i++;
while(s[i] == '-')
i++;
if(s[i] && strchr(b , s[i])) cnt++;
else i--;
}
}
}
cout << cnt;
}
Comentarii