赞
踩
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<stack>
using namespace std;
vector<int> support(vector<int>& money, vector<int>& costs, vector<int>& index,int& k){
vector<int> vec;
for(int i=0;i<index.size();i++){
int j=index[i];
int res=costs[j]-money[j];
if(money[j]>k && res>0){
vec.push_back(j);
}
else if(res>0)
k=k+res;
}
return vec;
}
int myfunc(vector<int>& money, vector<int>& costs, int k){
vector<int> todo;
for(int i=0;i<money.size();i++){
todo.push_back(i);
}
stack<vector<int> > stk;
stk.push(todo);
int count=todo.size();
while(1){
stk.push(support(money,costs,stk.top(),k));
if(stk.top().size()==count)
break;
else
count=stk.top().size();
}
return k;
}
int main() {
string m;
string n;
int k;
cin>>m;
cin>>n;
cin>>k;
vector<int> money;
vector<int> costs;
int index = 0;
int num = 0;
for (int i = 0; i < m.size(); i++) {
if (m[i] == ',') {
num = stoi(m.substr(index, i - index));
index = i + 1;
money.push_back(num);
}
}
num = stoi(m.substr(index, m.size() - index));
money.push_back(num);
index = 0;
num = 0;
for (int i = 0; i < n.size(); i++) {
if (n[i] == ',') {
num = stoi(n.substr(index, i - index));
index = i + 1;
costs.push_back(num);
}
}
num = stoi(n.substr(index, n.size() - index));
costs.push_back(num);
cout<<myfunc(money,costs,k)<<endl;
return 0;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。