Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

不要吵了,06AC代码。。。

Posted by youyousky20 at 2008-09-21 14:43:07
#include"iostream"
using namespace std;
int soldiers[100001];
int temp[100001];
long long ans;
void merge(int i,int j)
{
	if(i==j)
		return;
	merge(i,(i+j)/2);
	merge((i+j)/2+1,j);
	int p,q;
	int k;
	for(k=p=i,q=(i+j)/2+1;p<=(i+j)/2&&q<=j;)
	{
		if(soldiers[p]>=soldiers[q])
		{
			ans += (i+j)/2-p+1;
			temp[k++] = soldiers[q++];
			
		}
		else		
			temp[k++] = soldiers[p++];
	}
    while(p<=(i+j)/2)
        temp[k++]=soldiers[p++];
    while(q<=j)
        temp[k++]=soldiers[q++];
	for(k = i;k <= j;k++)
		soldiers[k] = temp[k];
}
int main()
{
	int N,n,ave;
	int i;
	scanf("%d",&N);
	while(N--)
	{
		scanf("%d%d",&n,&ave);
		ans = 0;
		for(i = 1;i <= n;i++)
		{
			scanf("%d",&soldiers[i]);
			soldiers[i] -= ave;
			soldiers[i] += soldiers[i-1];
			if(soldiers[i]>0)
				ans--;
		}
		merge(1,n);
		printf("%lld\n",(long long)(n)*(n-1)/2-ans);
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator