| ||||||||||
| 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 | |||||||||
2299 自己试数据都过,为什么Wrong Answer???(代码比较痴,理解理解)#include<iostream>
#include<cstdlib>
#include<algorithm>
#include<memory>
using namespace std;
long long sum[500100],b[500100],t,cnt;
struct node
{
int i;
int z;
}a[500100];
void in()
{
for(int i=1;i<=t;i++)
{
cin>>a[i].z;
a[i].i=i;
}
}
int lowbit(int i)
{
return i&-i;
}
int kk(node x,node y)
{
return x.z<y.z;
}
void cl()
{
sort(a+1,a+t+1,kk);
for(int ls=1;ls<=t;ls++)
b[ls]=a[ls].i;
}
void ans()
{
for(int ls=1;ls<=t;ls++)
{for(int i=b[ls]-lowbit(b[ls]);i>=1;i-=lowbit(i))
sum[b[ls]]+=sum[i];
sum[b[ls]]+=1;
for(int i=b[ls]+lowbit(b[ls]);i<=t;i+=lowbit(i))
sum[i]+=1;
cnt+=(b[ls]-sum[b[ls]]);}
cout<<cnt<<endl;
cnt=0;
}
void qk()
{
memset(sum, 0, sizeof(sum));
memset(b, 0, sizeof(b));
memset(a, 0, sizeof(a));
}
int main()
{
cin>>t;
while(t!=0)
{
in();
cl();
ans();
qk();
cin>>t;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator