#include#includeusingnamespacestd;constintmaxn=100000+5;longlonga[maxn],t[maxn];longlongans=0;voidmymerge(intx,intm,inty){inttx=x,tm=m+1;intk=0;while(t...
#include
#include
using namespace std;
const int maxn=100000+5;
long long a[maxn],t[maxn];
long long ans=0;
void mymerge(int x,int m,int y){
int tx=x,tm=m+1;
int k=0;
while(tx<=m && tm<=y){
if(a[tx]<=a[tm])
t[k++]=a[tx++];
else {
ans+=m-tx+1;
t[k++]=a[tm++];
}
}
while(tx<=m) t[k++]=a[tx++];
while(tm<=y) t[k++]=a[tm++];
for(int i=0;i
a[x++]=t[i];
}
}
void mergesort(int x,int y){
if(x==y) return ;
else {
int mid=(x+y)/2;
int xx=x,yy=y;
mergesort(xx,mid);
mergesort(mid+1,yy);
mymerge(xx,mid,yy);
//cout<
}
}
int main(){
int n,k;
while(cin>>n>>k){
memset(a,0,sizeof(a));
memset(t,0,sizeof(t));
for(int i=0;i
cin>>a[i];
}
ans=0;
mergesort(0,n-1);
if(k>ans) cout<
else
cout<
}
return 0;
}
展开