POJ 2459 - Feed Accounting

http://poj.org/problem?id=2459

概要

何日か前に F1 kg の餌を仕入れて,今日は F2 kg 残っている. 1頭の牛は1日に1kgの餌を食べる.

C 頭の牛について,何日目に来て何日目に発ったかが与えられるので,何日前に F1 kg 仕入れたのかを答える.

ただし,牛は来た日にも発った日にも餌を食べ,今日の分の餌も食べた結果残ったのが F2 kg である.

制約

解法

やるだけ.

 1 #include <iostream>
 2 #include <vector>
 3 #include <algorithm>
 4 using namespace std;
 5 
 6 struct present
 7 {
 8   int day;
 9   present(int d) : day(d) {}
10   bool operator()(const pair<int,int>& c) const
11   {
12     return c.first <= day && day <= c.second;
13   }
14 };
15 
16 int main()
17 {
18   int C, F1, F2, D;
19   cin >> C >> F1 >> F2 >> D;
20   vector<pair<int,int> > cows(C);
21   for (int i = 0; i < C; i++) {
22     cin >> cows[i].first >> cows[i].second;
23   }
24 
25   int f = F2 + count_if(cows.begin(), cows.end(), present(D));
26   while (f < F1) {
27     --D;
28     f += count_if(cows.begin(), cows.end(), present(D));
29   }
30   cout << D << endl;
31   return 0;
32 }
poj/2459.cc