fbpx

Problema #2116 – Smiley – Rezolvari PBInfo

de Mihai-Alexandru

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

S-ar putea sa iti placa