CSU 1684-Disastrous Downtime(set+二分)

来源:互联网 发布:养出通透的皮肤知乎 编辑:程序博客网 时间:2024/06/05 17:24
D - Disastrous Downtime
Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%lld & %llu
Submit Status Practice CSU 1684

Description

Input

Output

Sample Input

2 1010003 2100010101999

Sample Output

12
AC代码:
#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 + 50struct 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 zscfreopen("input.txt","r",stdin);#endifint 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;}


0 0
原创粉丝点击