Timue 1795

#include <iostream>
#include
<string>
#include
<map>
#include
<deque>
using namespace std;

struct husband_st {

string buy_name;
int buy_amount;

}
*husband_t;

husband_st mem[
1001];

int main() {

int M, N, amount, count=0, remain, temp_remain, first_guy, second_guy;
map
<string, int> shop;
deque
<int> line;
husband_st temp;
string name, of;

cin
>>M;
for(int i=0;i<M;i++) {
cin
>>amount>>of>>name;
shop.insert(pair
<string, int>(name, amount));
}

cin
>>N;

for(int i=0;i<N;i++) {
cin
>>amount>>of>>name;
temp.buy_amount
= amount;
temp.buy_name
= name;
mem[i]
= temp;
line.push_back(i);
}

while(!line.empty()) {
first_guy
= line.front();
remain
= shop[mem[first_guy].buy_name];
temp_remain
= remain - mem[first_guy].buy_amount;

if (remain == 0) { //没货了,老婆要打死我了 T_T
line.pop_front();
}
else if(temp_remain >= 0) { //有货,可以走了 ^_^
shop[mem[first_guy].buy_name] = temp_remain;
line.pop_front();
}
else { //货不够,问问老婆先
mem[first_guy].buy_amount = remain; //老婆说这个数还可以接受
line.pop_front();

if(line.empty()) { //前面那人打电话问老婆去了,主角可以去买了。
count++;
cout
<<count<<endl;
return 0;
}

second_guy
= line.front();
line.pop_front();
line.push_front(first_guy);
line.push_front(second_guy);
}

count
++;
}

cout
<<count<<endl;

return 0;
}


忽略了一个问题,就是主角前面只有一个人,并且他要打电话问老婆~~看了discuss,没太认真去想。

posted @ 2011-07-28 20:58  DOF_KL  阅读(159)  评论(0编辑  收藏  举报