| ||||||||||
| 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 | |||||||||
一个晚上,它WA得很HAPPY,我实在是太累了#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
int stack[1000100];
int p;
void downto(int i)
{
int j=i*2;
int temp=stack[i];
while(j<=p)
{
if(j<p&&stack[j+1]>stack[j])
j++;
if(stack[j]>temp)
stack[i]=stack[j];
else break;
i=j;
j=i*2;
}
stack[i]=temp;
}
void makeorder()
{
int i;
long temp;
for(i=p/2;i>=1;i--)
downto(i);
i=p;
while(p>1)
{
temp=stack[p];
stack[p]=stack[1];
stack[1]=temp;
p--;
downto(1);
}
p=i;
}
void sov()
{
int a[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};
int flag=1;
int i,j;
char c[20];
int temp;
scanf("%d",&p);
for(i=1;i<=p;i++)
{
scanf("%s",c);
stack[i]=0;
for(j=0;c[j];j++)
if(c[j]!='-')
if(c[j]>='A'&&c[j]<'Z'&&c[j]!='Q')
stack[i]=stack[i]*10+a[c[j]-'A'];
else if(c[j]>='0'&&c[j]<='9')
stack[i]=stack[i]*10+c[j]-'0';
else while(1);
}
makeorder();
for(i=2;i<=p;i++)
if(stack[i]<stack[i-1])
while(1);
j=1;
temp=stack[1];
for(i=2;i<=p;i++)
if(stack[i]==stack[i-1])
j++;
else{
if(j>1)
{
printf("%03d-%04d %d\n",temp/10000,temp%10000,j);
flag=0;
}
temp=stack[i];
j=1;
}
if(j>1)
{
printf("%03d-%04d %d\n",temp/10000,temp%10000,j);
flag=0;
}
if(flag) printf("No duplicates.\n");
}
void main()
{
sov();
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator