Description
Input
Output
Sample Input
2 1 0 1000 3 2 1000 1010 1999
Sample Output
1 2AC代码:#include<iostream> #include<functional> #include<algorithm> #include<cstring> #include<string> #include<cstdio> #include<vector> #include<queue> #include<set> using namespace std; typedef long long ll; typedef unsigned long long ull; #define T 100000 + 50 struct node { ll v; bool operator<(const node& b)const{ return v<b.v; } }a[T]; struct line { ll val; line():val(0){} line(ll _2):val(_2){} bool operator<(const line& b)const{ return val>b.val; } }; ll v[T]; bool cmp(const ll& a,const ll& b){return a>b;} int main() { #ifdef zsc freopen("input.txt","r",stdin); #endif int n,m,i,j; while(~scanf("%d%d",&n,&m)) { ll c = 0; ll sum = 0; for(i=0;i<n;++i){ scanf("%lld",&a[i].v); } sort(a,a+n); fill(v,v+T,0); multiset< ll,greater<int> > Q; multiset< ll,greater<int> >::iterator it; ll k; Q.insert(a[0].v+1000); ll cnt; for(i=1;i<n;++i){ it = Q.begin(); k = *it; it = Q.lower_bound(a[i].v); if(it==Q.end()){ Q.insert(a[i].v+1000); } else if(it!=Q.end()){ Q.erase(it); Q.insert(a[i].v+1000); } } cnt = Q.size(); Q.clear(); /*if(m==1){ printf("%lld\n",cnt); continue; }*/ if(cnt%m>0){ cnt = cnt/m+1; } else { cnt = cnt/m; } printf("%lld\n",cnt); } return 0; }