#include<stdio.h> long long m,n,s; void Merge(int source[],int temp[],int start,int mid,int end) { int i = start,j=mid+1,k = start; while(i!=mid+1&&j!=end+1) { if(source[i]<source[j]) { temp[k++]=source[i++]; s++; } else { temp[k++]=source[j++]; s++; } } while(i!=mid+1) { temp[k++]=source[i++]; } while(j!=end+1) { temp[k++]=source[j++]; } for(i=start;i<=end;i++) source[i]=temp[i]; } void Mergesort(int source[],int temp[],int start,int end) { int mid; if(start<end) { mid=(start+end)/2; Mergesort(source,temp,start,mid); Mergesort(source,temp,mid+1,end); Merge(source,temp,start,mid,end); } } int main() { int i,mid,source[100000],temp[100000]; while(scanf("%lld%lld",&n,&m)!=EOF) { s=0; for(i=0;i<n;i++) scanf("%d",source+i); Mergesort(source,temp,0,n-1); if(s<=m) printf("0\n"); else printf("%lld\n",s-m); } return 0; } |
Double click to view unformatted code.