#include <stdio.h> #include "string.h" #include "math.h" int cnt; void Merge(int ss[],int ex,int ey,int sx,int sy) { int temp[100002],i=ex,j=sx,pos=ex; for(;i<=ey&&j<=sy;) { if(ss[i]<=ss[j]) temp[pos++]=ss[i++]; else { temp[pos++]=ss[j++]; cnt+=(ey-i+1); } } while(i!=ey+1) temp[pos++]=ss[i++]; while(j!=sy+1) temp[pos++]=ss[j++]; for(i=ex;i<=sy;i++) { ss[i]=temp[i]; } } void Mergesort(int ss[],int left,int right) { int middle; if(left<right) { middle=(left+right)/2; Mergesort(ss,left,middle); Mergesort(ss, middle+1, right); Merge(ss,left,middle,middle+1,right); } } int main() { int n,k; while(scanf("%d%d",&n,&k)!=EOF) { int ss[100002]; cnt=0; for(int i=0;i<n;i++) scanf("%d",&ss[i]); Mergesort(ss, 0, n-1); if(k>cnt) printf("0\n"); else printf("%d\n",cnt-k); } } |
Double click to view unformatted code.