【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; }