| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
老是TLE,哪位大神能帮我看看,不甚感激!#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int readline(){
int num=0,i,t,len;
char a[50];
int b[26]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9};
scanf("%s",a);
for(i=0,len=strlen(a);i<len;i++){
if(a[i]!='-'){
if(a[i]<'A') t=a[i]-48;
else t=b[a[i]-'A'];
num=10*num+t;
}
}
return num;
}
int partition(int *p,int low,int high){
int pivotkey;
pivotkey=p[low];
while(low<high){
while(low<high && p[high]>=pivotkey) high--;
p[low]=p[high];
while(low<high && p[low]<=pivotkey) low++;
p[high]=p[low];
}
p[low]=pivotkey;
return low;
}
void Qsort(int *p,int low,int high){
int pivot;
if(low<high){
pivot=partition(p,low,high);
Qsort(p,low,pivot-1);
Qsort(p,pivot+1,high);
}
}
int main(){
int i,j,n,t1,t2,flag,*array;
scanf("%d",&n);
array=(int *)malloc(n*sizeof(int));
for(i=0;i<n;i++){
array[i]=readline();
}
Qsort(array,0,n-1);
// for(i=0;i<n;i++) printf("%d\n",array[i]);
for(i=0,j=1,flag=0;i<n-1;){
while(array[i]==array[i+1]){
i++;
j++;
}
if(j>1){
t1=array[i]/10000;
t2=array[i]-t1*10000;
printf("%03d-%04d %d\n",t1,t2,j);
flag=1;
j=1;
}
i++;
}
if(flag==0) printf("No duplicates.\n");
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator