ACM一道题,C语言,已经精疲力竭 求大神找出错误,啊啊啊

问题如下
Problem Description
ACM比赛剩下最后10分钟,其他人都已经收拾好东西准备走人,Zyj才从睡梦中醒来。Zyj可以看到所有其他人的过题情况,他希望得到的名次在a到b之间,问有几种可选择的方案?(假设其他人的提交时间即使加上罚时也早于Zyj的提交,毕竟剩下10分钟了都)
Input
第一行为T(0<T<100),代表有T组数据。
每组数据中第一行为两个数字m n a b,由空格隔开,代表这次比赛有m道题(由于字母数量的限制,0<m<27),n个其他人,Zyj希望得到的名次x满足a<x<b (-1<n,a,b<1000)
下面n行为每个人每道题的通过情况,1为已通过,0为未通过
Output
对每个样例,输出Case #k: ans,其中k为样例编号,ans为方案数量。
Sample Input

2
26 1 0 2
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
26 1 0 2
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
(Case #1是25个1 1个0,#2是1个0 24个1 1个0)

Sample Output

Case #1: 1
Case #2: 27
样例解释:
Case #1中Zyj必须AK(全部题都做出来)才可以得到大于0小于2的名次,即第1名。不要怕他做不完,那可是Zyj
Case #2中Zyj可以AK,也可以任意选一道不做

ACM排名规则见http://scnuacm2015.sinaapp.com/php/presentation.php

Author
SCNU20102200088

我的代码
#include
#include
int main()
{
long long int a,c,d,e,f,g,h,i,j,m,p,q,r,s;
scanf("%I64d",&r);
s=r;
while(r--)
{
scanf("%I64d%I64d%I64d%I64d",&a,&e,&h,&i);
long long int b[100000]={0};
b[0]=a;
f=e;
if(f!=0)
{

p=0;
while(e--)
{

for(c=0;c<a;c++)
{

scanf("%I64d",&d);
b[e+1]=b[e+1]+d;

}

}
for(c=1;c<f+1;c++)
for(e=1;e<f-c+1;e++)
{
    if(b[e]<b[e+1])
    {
        g=b[e];
        b[e]=b[e+1];
        b[e+1]=g;
    }

}

for(c=h;c<i-1;c++)
{
    for(e=b[c+1]+1;e<=b[c];e++)
    {
        q=e;
        m=1;
        if(q>a/2)
        q=a-q;
        for(j=a-q+1;j<=a;j++)           
        m=m*j;          
        for(j=1;j<=q;j++)                       
        m=m/j;          
        p=p+m;


    }
    if(c==f)
        p++;        
}

}
else
{

    if(h==0)
    p=pow(2,a);
    else
    p=0;
}

printf("Case #%d: ",s-r);
printf("%I64d\n",p);

}
return 0;

}
每次提交都WA不知如何是好

c acm

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问