POJ 2459 - Feed Accounting
http://poj.org/problem?id=2459
概要
何日か前に F1 kg の餌を仕入れて,今日は F2 kg 残っている. 1頭の牛は1日に1kgの餌を食べる.
C 頭の牛について,何日目に来て何日目に発ったかが与えられるので,何日前に F1 kg 仕入れたのかを答える.
ただし,牛は来た日にも発った日にも餌を食べ,今日の分の餌も食べた結果残ったのが F2 kg である.
制約
- 1 <= C <= 100
- 1 <= F2 <= F1 <= 1000000
解法
やるだけ.
poj/2459.cc1 #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 }