| ||||||||||
| 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 | |||||||||
为什么是runtime error?实际运行的时候正常.自己随便测试了几个,没有发现问题啊.
why?
下面是source code.
thx.
#include <stdio.h>
#include <stdlib.h>
long res=0;
void Merge(long*SR,long* TR,int i ,int m ,int n)
{
int j,k;
for(j=m+1,k=i;i<=m&& j<=n;++k)
{
if(SR[i]<SR[j])
{
res+=abs(i-k);
TR[k]=SR[i++];
}
else
{
res+=abs(j-k);
TR[k]=SR[j++];
}
}
if(i<=m)
{
for(int x=i;x<=m;x++)
{
res+=abs(x-k);
TR[k++]=SR[x];
}
}
if(j<=n)
{
for(int x=j;x<=n;x++)
{
res+=abs(x-k);
TR[k++]=SR[x];
}
}
}
void Msort(long* SR,long* TR,int s,int t)
{
int m;
long dig3[500000];
if(s==t)
TR[s]=SR[s];
else
{
m=(s+t)/2;
Msort(SR,dig3,s,m);
Msort(SR,dig3,m+1,t);
Merge(dig3,TR,s,m,t);
}
}
int main()
{
int count;
long dig[500000];
long dig2[500000];
while(scanf("%d",&count)==1)
{
res=0;
if(count==0)
{
exit(0);
}
for(int i=0;i<count;i++)
{
scanf("%lld",&dig[i]);
}
Msort(dig,dig2,0,count-1);
printf("%lld\n",res/2);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator