Uva 10008 Solution

#include<bits/stdc++.h>
using namespace std;

string boro(string s)
{
    int l = s.size(), i;
    string p = "";
    for(i=0; i<l; i++)
    {
        if(s[i]>='a' && s[i]<='z')
        {
            s[i] = s[i] - 32;
            p.push_back(s[i]);
        }
        else
            p.push_back(s[i]);
    }
    return p;
}

int main()
{
    int n, i, j, k;

    while(cin >> n)
    {
        getchar();

        int a[26];
        char b[26];
        for(i=0; i<26; i++)
        {
            a[i] = 0;
        }
        for(i='A'; i<='Z'; i++)
        {
            b[i-65] = i;
        }

        for(k=1; k<=n; k++)
        {
            string s;
            getline(cin, s);
            s = boro(s);
            int l = s.size();
            for(j=0; j<l; j++)
            {
                if(s[j]>='A' && s[j]<= 'Z')
                {
                    int t = s[j] - 65;
                    a[t] += 1;
                }
            }
        }

        for(i=0; i<26-1; i++)
        {
            for(j=0; j<26-i-1; j++)
            {
                if(a[j] < a[j+1])
                {
                    swap(a[j], a[j+1]);
                    swap(b[j], b[j+1]);
                }
                if(a[j] == a[j+1])
                {
                    if(b[j] > b[j+1])
                    {
                        swap(a[j], a[j+1]);
                        swap(b[j], b[j+1]);
                    }
                }
            }
        }

        for(i=0; i<26; i++)
        {
            if(a[i] > 0)
            {
                cout << b[i] << " " << a[i] << endl;
            }
        }

    }
    return 0;
}

Comments