| ||||||||||
| 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:megersort居然错?In Reply To:megersort居然错? Posted by:6233843 at 2006-10-22 21:45:24 > #include <iostream>
> using namespace std;
>
> const int MAX = 500001;
> long long a[MAX],b[MAX];
> long long res;
>
> void merge(int begin,int mid,int end)
> {
> int i,j,k = 0;
> for(i = begin,j = mid+1; i <= mid && j <= end; k++){
> if(a[i] <= a[j])
> b[k] = a[i++];
> else {
> b[k] = a[j++];
> res += mid+1-i;
> }
> }
> for(; i <= mid; i++)
> b[k++] = a[i];
> for(; j <= end; j++)
> b[k++] = a[j];
> for(i = 0; i < k; i++)
> a[begin+i] = b[i];
> }
>
> void msort(int s, int t)
> {
> if(s < t){
> int m = (s+t)>>1;
> msort(s,m);
> msort(m+1,t);
> merge(s,m,t);
> }
> }
>
> int main()
> {
> int test;
> int i;
> while (scanf("%d",&test) && test)
> {
> res=0;
> for (i=0;i<test;i++)
> {
> scanf("%lld",&a[i]);
> }
> msort(0,test-1);
> printf("%lld\n",res);
~~~致命
> }
> }
> 想不出来个理由?
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator