您的位置:首页 > 其它

Disk Storage(微软笔试)

2015-11-19 17:58 381 查看
http://hihocoder.com/contest/hiho72/problem/1

#include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <string.h>

using namespace std;
#define MAXN 100010
int val[MAXN];
int n, m, h, r;
vector< vector<int> > vec;
void solve()
{
vec.clear();
for( int i = 0; i < n; i++)
{
if(i == 0 || val[i] - val[i-1] > m)
{
vector<int> single;
single.push_back(val[i]);
vec.push_back(single);
}
else
vec[vec.size() - 1].push_back(val[i]);
}

int ans = 0;
for(int i = 0; i < vec.size(); i++)
{
if(vec[i][0] <= r)
{
for( int j = 0; j < vec[i].size(); j++)
{
if(vec[i][j] <= r + j) ans++;
else break;
}

}
}
ans = min(ans, h);
printf("%d\n", ans);

}
int main()
{

while(scanf("%d%d%d%d",&n, &m, &h, &r) != EOF){
for(int i = 0; i < n; i++)
scanf("%d",&val[i]);
sort(val, val + n);
solve();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: