【poj 1002】搞了半天排序算法,最后还是用了sort()

500ms的成绩马马虎虎ac了,果然还是图森破,刚刚学c++就好高骛远

#include<fstream>
#include<algorithm>
using namespace std;
int main()
{
    int i,j,k,n,m,ph[200000],dic[26]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,0,7,7,8,8,8,9,9,9,0};
    char buf[300];
    bool t=true;

    scanf("%d",&n);
    for ( i = 0; i < n; i++)
    {
        scanf("%s",buf);
        for ( j = ph[i] = 0; buf[j] ; j++ )
        {
            if ( buf[j] == '-' ) continue;
            if ( buf[j] <= '9' ) ph[i] = 10 * ph[i] + buf[j] - '0' ;
            else if ( buf[j] <= 'Z' ) ph[i] = 10 * ph[i] + dic[ buf[j] - 'A' ] ;
        }
    }
    sort( ph , ph + n );
    for ( i = j = 1; i < n; i++ )
    {
        m = 1;
        if ( ph[i] == ph[i-1] )
        {
            m++;
            j=0;
            while ( ph[i] == ph[i + (++j)] && i < n - 1 )m++;
            printf("%03d-%04d %d\n", ph[i]/10000, ph[i]%10000,m);
            i += m - 1;
            t = false;
        }
    }
    if (t) printf("No duplicates.");
    return 0;
}

 

posted @ 2013-04-29 21:48  活在二次元的伪触  阅读(200)  评论(0编辑  收藏  举报