/*
ID:
PROG: barn1
LANG: C++11
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
int boards_amount, stall_amount, cows_amount;
int stall_occupied[250];
freopen("barn1.in", "r", stdin);
freopen("barn1.out", "w", stdout);
cin >> boards_amount >> stall_amount >> cows_amount;
for (int i = 0; i < cows_amount; i ++){
scanf("%d", &stall_occupied[i]);
}
sort(stall_occupied, stall_occupied + cows_amount);
struct Gap{
int start, end;
int dis() {return end - start + 1;};
}gap[55];
int idx = 0;
for (int i = 1; i < cows_amount; i ++){
if (stall_occupied[i] - stall_occupied[i - 1] == 1)
continue;
else{
gap[idx].start = stall_occupied[i - 1] + 1; gap[idx++].end = stall_occupied[i] - 1;
}
}
sort(gap, gap+idx, [](Gap a, Gap b){return a.dis() > b.dis();});
int total_gap = 0;
for (int i = 0; i < min(idx, boards_amount - 1); i ++){
total_gap += gap[i].dis();
}
total_gap += stall_occupied[0] - 1;
total_gap += stall_amount - stall_occupied[cows_amount - 1];
cout << stall_amount - total_gap << endl;
return 0;
}
【USACO】Barn Repair
最新推荐文章于 2019-03-21 19:28:56 发布