Pages

শনিবার, ২০ জুলাই, ২০১৩

Uva solution code of 10008


Problem link
#include<cstdio>
#include<iostream>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;
int main()
{
    int line;
    scanf("%d",&line);
    getchar();
    int arr[130];
     memset(arr,0,sizeof(arr));
     vector<int>my;
     vector<char>out[130];
     priority_queue<int>ch;
    while(line--)
    {
        char data[10000];
        gets(data);
        for(int i=0;i<strlen(data);i++)
        {
            if((data[i]>='A' && data[i]<='Z') || (data[i]>='a' && data[i]<='z'))
            {
               if((data[i]>='a' && data[i]<='z'))
                data[i]=data[i]-32;
               int a=data[i];
               arr[a]++;
            }
        }
    }
    int visit[10000];
    memset(visit,0,sizeof(visit));
    for(int i=65;i<=90;i++)
    {
       if(arr[i]!=0 && !visit[arr[i]])
       {
           ch.push(arr[i]);
           visit[arr[i]]=1;
       }

    }
    while(!ch.empty())
    {
        int t=ch.top();
        ch.pop();
        my.push_back(t);
         for(int i=65;i<=90;i++)
         {
             if(arr[i]==t)
                out[t].push_back(i);
         }
    }
    for(int i=0;i<my.size();i++)
    {
      int t=my[i];
      for(int j=0;j<out[t].size();j++)
      {
          printf("%c %d\n",out[t][j],t);
      }
    }
    return 0;
}

0 comments:

একটি মন্তব্য পোস্ট করুন