| ||||||||||
| 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 | |||||||||
不要吵了,06AC代码。。。#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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator