| ||||||||||
| 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 | |||||||||
栈溢出了吧,你的局部数组那么大In Reply To:为什么是runtime error?实际运行的时候正常. Posted by:silvere at 2006-03-04 23:58:07 > 自己随便测试了几个,没有发现问题啊.
>
> 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