| ||||||||||
| 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 | |||||||||
Re:怎么还是WA.....In Reply To:怎么还是WA..... Posted by:Essence_me at 2005-08-14 17:25:27 > #include <stdio.h>
> #include <string.h>
> #include <math.h>
> #include <stdlib.h>
> #define Upcase(c) ((((c)>='a') && ((c)<='z'))?((c)-32):(c))
> char Name[25000][100];
> int Index[25000],Teams=0,snumber[25000],fnumber[25000];
>
>
>
> void GetID(char *NowName,int *number,int style)
> {
> int i,j,k,b;
> i=-1;j=Teams;
> while (i<j-1)
> {
> k=(i+j)/2;
> b=strcmp(Name[Index[k]],NowName);
> if (!b)
> {
> number[Index[k]]++;
> return;
> }
> if (b>0)
> {
> j=k;
> }
> else
> {
> i=k;
> }
> }
> if(!style)
> {
> for (i=Teams;i>j;i--)
> {
> Index[i]=Index[i-1];
> }
> Index[j]=Teams;
> strcpy(Name[Teams],NowName);
> number[Teams]=1;
> Teams++;
> return;
> }
>
> }
> void GetChar(char *str,int *number,int style)
> {
> int p=0,p1=0;
> char ch[100];
> while(str[p])
> {
> while(1)
> {
> if(Upcase(str[p])<='Z'&&Upcase(str[p])>='A')
> {
> ch[p1]=Upcase(str[p]);
> p1++;p++;
> }
> else if(str[p]<='9'&&str[p]>='0')
> {
> ch[p1]=str[p];
> p1++;p++;
> }
> else if(str[p]=='\0')
> {
> ch[p1]='\0';
> p1=0;
> break;
> }
> else if(str[p]==' ')
> {
> ch[p1]='\0';
> p++;
> p1=0;
> break;
> }
> else p++;
> }
> if(ch[0]=='\0')return;
> GetID(ch,number,style);
> }
> }
> void output(int *num1,int *num2)
> {
> int i;
> double sum=0;
> for(i=0;i<Teams;i++)
> {
> sum+=sqrt((double)num1[i]*num2[i]);
> }
> printf("%.2lf\n",sum);
> }
>
> int main()
> {
> int n,i,j,quit=0;
> char str[255];
> scanf("%d",&n);
> getchar();
> for(i=0;i<n;i++)
> {
> if(i!=0)printf("\n");
> Teams=0;
> memset(snumber,0,sizeof(int)*25000);
> memset(fnumber,0,sizeof(int)*25000);
> while(1)
> {
> gets(str);
> if(str[0]=='-')break;
> else GetChar(str,snumber,0);
> }
> while(1)
> {
> gets(str);
> if(str[0]=='-')
> {
> if(quit==0)
> {
> output(snumber,fnumber);
> memset(fnumber,0,sizeof(int)*25000);
> quit++;
> }
> else if(quit==1)
> {
> break;
> }
> }
> else
> {
> quit=0;
> GetChar(str,fnumber,1);
> }
> }
>
> }
> return 0;
> }
第一层循环是因为浙大的原因
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator