#include <stdio.h>
#include <string.h>
#include<stdlib.h>
int main()
{
int i,j,c,n,k=0,t;char (*str)[32];int *count;
//test cases, must be less than 5
if (t<=5)
{
while (t--)
{
//number of accounts,must be less than 100000
if (n<=100000)
{
//array str to store input n number of account numbers of same size 32
//array count to store number of times each account number occurs
str
=(char(*)[32])malloc(n
*32*sizeof(char)); count
=(int *)malloc(n
*sizeof(int)); for (i=0;i<n;i++)
{
for (j
=0;(c
=getchar())!='\n' && j
<31;j
++) str[i][j]=c;
str[i][j]='\0';
}
//quick sort function to sort the array in lexicographic order
qsort(str
, n
, 32, (int (*)(const void *, const void *))strcmp);
//prints account number along with its frequency
//case when only a single account occurs
if (strcmp(str
[0],str
[n
-1])==0)
//case when multiple accounts are inputted
else
{
for (i=0;i<n-1;i=j)
{
for (j=i+1;j<n;j++)
{
{
count[k++]=j;
break;
}
else continue;
}
}
for (j=0,i=0;i<k;j=count[i-1])
{
if (i==0)
printf("%s %d\n",str
[j
],count
[i
]); else
printf("%s %d\n",str
[j
],count
[i
]-j
); i++;
}
if (strcmp(str
[n
-1],str
[n
-2])!=0) }
//free memory after every input
}
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGU8c3RkbGliLmg+CmludCBtYWluKCkKewogICAgaW50IGksaixjLG4saz0wLHQ7Y2hhciAoKnN0cilbMzJdO2ludCAqY291bnQ7CiAgICAKICAgIC8vdGVzdCBjYXNlcywgbXVzdCBiZSBsZXNzIHRoYW4gNQogICAgCiAgICBzY2FuZigiJWQiLCZ0KTsKICAgIGlmICh0PD01KQogICAgewogICAgICAgIHdoaWxlICh0LS0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vbnVtYmVyIG9mIGFjY291bnRzLG11c3QgYmUgbGVzcyB0aGFuIDEwMDAwMAogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHNjYW5mKCIlZFxuIiwmbik7CiAgICAgICAgICAgICAgICBpZiAobjw9MTAwMDAwKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIC8vYXJyYXkgc3RyIHRvIHN0b3JlIGlucHV0IG4gbnVtYmVyIG9mIGFjY291bnQgbnVtYmVycyBvZiBzYW1lIHNpemUgMzIKICAgICAgICAgICAgICAgICAgICAvL2FycmF5IGNvdW50IHRvIHN0b3JlIG51bWJlciBvZiB0aW1lcyBlYWNoIGFjY291bnQgbnVtYmVyIG9jY3VycwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHN0cj0oY2hhcigqKVszMl0pbWFsbG9jKG4qMzIqc2l6ZW9mKGNoYXIpKTsKICAgICAgICAgICAgICAgICAgICBjb3VudD0oaW50ICopbWFsbG9jKG4qc2l6ZW9mKGludCkpOwogICAgICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGo9MDsoYz1nZXRjaGFyKCkpIT0nXG4nICYmIGo8MzE7aisrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyW2ldW2pdPWM7CgogICAgICAgICAgICAgICAgICAgICAgICBzdHJbaV1bal09J1wwJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy9xdWljayBzb3J0IGZ1bmN0aW9uIHRvIHNvcnQgdGhlIGFycmF5IGluIGxleGljb2dyYXBoaWMgb3JkZXIKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBxc29ydChzdHIsIG4sIDMyLCAoaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpc3RyY21wKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvL3ByaW50cyBhY2NvdW50IG51bWJlciBhbG9uZyB3aXRoIGl0cyBmcmVxdWVuY3kKICAgICAgICAgICAgICAgICAgICAvL2Nhc2Ugd2hlbiBvbmx5IGEgc2luZ2xlIGFjY291bnQgb2NjdXJzCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmNtcChzdHJbMF0sc3RyW24tMV0pPT0wKQogICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiVzICVkXG4iLHN0clswXSxuKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvL2Nhc2Ugd2hlbiBtdWx0aXBsZSBhY2NvdW50cyBhcmUgaW5wdXR0ZWQKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MDtpPG4tMTtpPWopCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGo9aSsxO2o8bjtqKyspCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJjbXAoc3RyW2ldLHN0cltqXSkhPTApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRbaysrXT1qOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKGo9MCxpPTA7aTxrO2o9Y291bnRbaS0xXSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpPT0wKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIlcyAlZFxuIixzdHJbal0sY291bnRbaV0pOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiVzICVkXG4iLHN0cltqXSxjb3VudFtpXS1qKTsKICAgICAgICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoc3RyY21wKHN0cltuLTFdLHN0cltuLTJdKSE9MCkKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIlcyAlZFxuIixzdHJbbi0xXSwxKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLy9mcmVlIG1lbW9yeSBhZnRlciBldmVyeSBpbnB1dAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBmcmVlKHN0cik7CiAgICAgICAgICAgICAgICBmcmVlKGNvdW50KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgfQpyZXR1cm4gMDsKfQ==