ECOO '19 R2 P1 - Email

View as PDF

Submit solution

Points: 5 (partial)
Time limit: 30.0s
Memory limit: 512M

Problem type

A seldom-known fact about email addresses is that you can format a given address in several different ways. In particular:

  • The entire address is case-insensitive.
  • Dots (.) before the at-sign (@) sign are ignored.
  • A plus (+) followed by any string can be added before the at-sign (@). The plus and following string are ignored.

For example, foo@bar.com and fO.o+baz123@bAR.com refer to the same email address.

John runs a service where users sign up with their email address. He has noticed that some users have signed up multiple times using different representations of the same address. He has asked for your help to determine the number of unique email addresses that have signed up on his site.

Input Specification

The input will contain 10 datasets. Each dataset begins with a line containing an integer N (1 \le N \le 100\,000), the number of email addresses. The next N lines each contain an email address S (1 \le |S| \le 30). The email address will be formatted as a non-empty user part consisting of letters, numbers, dots, and pluses followed by a single at-sign followed by a non-empty domain part consisting of letters, numbers, and dots.

For the first 6 cases, N \le 100.

Output Specification

For each dataset, output the number of unique email addresses in the dataset.

Sample Input (Two Datasets Shown)

3
foo@bar.com
fO.o+baz123@bAR.com
foo@bar..com
3
c++@foo.com
c...@Foo.com
.c+c@FOO.COM

Sample Output

2
1

Educational Computing Organization of Ontario - statements, test data and other materials can be found at ecoocs.org


Comments


  • 0
    henrybaolol9  commented on July 21, 2020, 4:13 p.m.

    can somebody please tell me why my code isn't working


    • 4
      AlanL  commented on July 21, 2020, 6:01 p.m.

      Each input case contains 10 data sets, so your code has to run 10 times, not once.


  • 17
    idkanything  commented on April 30, 2019, 3:37 p.m.

    Why is the time limit 30s??


    • -2
      jednooki  commented on Aug. 6, 2022, 8:15 a.m. edited

      Becouse you need to use sets not lists. Searching lists is very slow. Seraching sets is much faster (in my case more than 2000 times faster).


    • 28
      Rimuru  commented on April 30, 2019, 3:56 p.m.

      Because the ECOO judges are the teacher's, and they'll wait a maximum of 30 seconds for your code to produce output.