Tuesday, April 19, 2016

UVa 10062 - Tell Me The Frequencies

#include <bits/stdc++.h>
#define LL  long long
#define SZ(x) ((int)(x).size())
#define ALL(x) (x).begin(),(x).end()
#define REP(i,n) for(int i=0;i<n;i++)
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define REV(i,n) for(int i=n-1;i>=0;i--)
#define pri(a) cout << a << endl;
using namespace std;

struct DT
{
    int asci;
    int freq;
}data[500];

bool cmp(DT a, DT b)
{
    if(a.freq < b.freq) return true;
    else if(a.freq == b.freq and a.asci > b.asci) return true;

    return false;
}

int val[500];

int main()
{
    string s;
    int f = 0;

    while(getline(cin,s))
    {
        memset(val, 0 , sizeof val);

        REP(i,SZ(s))
        {
            val[ s[i] ]++;
        }

        int idx = 0;

        REP(i,500)
        {
            if(val[i])
            {
                data[idx].asci = i;
                data[idx].freq = val[i];
                idx++;
            }
        }

        sort(data,data+idx,cmp);

        if(f) puts("");
        f++;

        REP(i,idx)
        {
            cout << data[i].asci << " " << data[i].freq << "\n";
        }
    }
    return 0;
}

No comments:

Post a Comment