Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

除排序外和C0400004079写的一样,为什么wrong answer?救命啊!!!!!

Posted by glaver at 2004-04-03 23:13:28 on Problem 1002
#include <stdio.h>
#include <stdlib.h>

main()
{
long count;
long i,j,k,ir,first;
long num[100002];
char tmp[200];
scanf("%ld",&count);
for(i=1;i<=count;i++)
   {
    scanf("%s",tmp);
    for(j=0,k=0;tmp[j]!='\0';j++,k++)
       {
        if(tmp[j]>='A'&&tmp[j]<='P') tmp[j]=(char)((tmp[j]-'A')/3)+'2';
        if(tmp[j]>='R'&&tmp[j]<='Y') tmp[j]=(char)((tmp[j]-'Q')/3)+'7';
        tmp[k]=tmp[j];
        if(tmp[k]=='-') k--;
       }
   tmp[k]='.';   
   num[i]=atol(tmp);
   }
   
k=count/2+1;  //堆排序
ir=count;
while(1)
  {
   if(k>1) k--,first=num[k];
   else {
         first=num[ir];
         num[ir]=num[1];
         ir--;
         if(ir<=1) break;
         }
  i=k;
  j=k+k;
  while(j<=ir)
    {
     if(j<ir&&num[j]<num[j+1]) j++;
     if(first<num[j])
         {
         num[i]=num[j];
         i=j;
         j=j+j;
         }
     else j=ir+1;    
    }
  num[i]=first;  
  }
num[1]=first; 

 
ir=0;         //输出    
for(i=1,j=1;i<count;i++)
    {
     if(num[i]==num[i+1]) j++;
     if(num[i]!=num[i+1]||i==count-1)
      {
			if(j>1){
     		        sprintf(tmp,"%07ld",num[i-1]);
					for(k=0;k<7;k++)
				    	{	
                        if(k==3) printf("-");
						printf("%c",tmp[k]);
				    	}
					printf(" %ld",j);
					printf("\n");
					j=1;
					ir=1;
					}
       }
    }
 
if(ir==0) printf("No duplicates.\n");      
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator