惨痛教训。。因为将l写成了1导致TLE十多次
#include<iostream>
#include <string>
#include<algorithm>
#include<fstream>
#include<cmath>
using namespace std;
#define lch(i) ((i)<<1)
#define rch(i) ((i)<<1|1)
#define sqr(i) ((i)*(i))
#define pii pair<int,int>
#define mp make_pair
#define FOR(i,b,e) for(int i=b;i<=e;i++)
#define FORE(i,b,e) for(int i=b;i>=e;i--)
#define ms(a) memset(a,0,sizeof(a))
const int maxnum =500005;
const int INF = 1000000000;
int tol,n,m,newn;
long long sum=0;
int seq[maxnum];
int lef[250003], rig[250003];
void puttogether(int l,int r){
if(l==r)return;
int mid = (l+r)>>1;
puttogether(l,mid);
puttogether(mid+1,r);
int n1 = mid-l+1,n2 =r-mid;
FOR(i,0,n1-1){
lef[i]=seq[l+i];
}
FOR(i,0,n2-1){
rig[i]=seq[mid+1+i];
}
lef[n1]=rig[n2]=0x7fffffff;
int pl=0,pr=0;
FOR(i,l,r){
if(rig[pr]<lef[pl]){
sum+=mid-l+1-pl;
seq[i]=rig[pr++];
}else
seq[i]=lef[pl++];
}
}
int main()
{
/*fstream fin("G:/1.txt");
fin>>m;*/
while(scanf("%d",&n)&&n){
FOR(i,1,n){
scanf("%d",&seq[i]);
}
sum=0;
puttogether(1,n);
printf("%lld\n",sum);
}
return 0;
}