#include <bits/stdc++.h>
const int N = 1e5 + 10;
using namespace std;
using LL = long long;
vector<array<int,3>> Max(5),All(5),Need(5);
bool st[10];
signed main() {
int za,zb,zc;
cin >> za >> zb >> zc; //读入资源总量
for(int i = 0; i <= 4; i++){
cin >> Max[i][0] >> Max[i][1] >> Max[i][2]; //读入Max
}
for(int i = 0; i <= 4; i++){
cin >> All[i][0] >> All[i][1] >> All[i][2];//读入Allocation
}
cout << "Need:\n";
for(int i = 0; i <= 4; i++){
for(int j = 0; j < 3; j++)
{
Need[i][j] = Max[i][j] - All[i][j];
cout << Need[i][j] << ' ';
}
cout << '\n';
}
array<int,3> work;
work[0] = za - All[0][0] - All[1][0] - All[2][0] - All[3][0] - All[4][0];
work[1] = zb - All[0][1] - All[1][1] - All[2][1] - All[3][1] - All[4][1];
work[2] = zc - All[0][2] - All[1][2] - All[2][2] - All[3][2] - All[4][2];
cout << "A: " << work[0] << " ";
cout << "B: " << work[1] << " ";
cout << "C: " << work[2] << " ";
cout << '\n';
int idx = 0;
int flag = 0;
while(1){
if(flag == 5) break;
if(st[idx] == 0 && Need[idx][0] <= work[0] && Need[idx][1] <= work[1] && Need[idx][2] <= work[2]){
st[idx] = 1;
printf("p%d %d %d %d %d %d %d ",idx,work[0],work[1],work[2],Need[idx][0],Need[idx][1],Need[idx][2]);
printf("%d %d %d %d %d %d\n",All[idx][0],All[idx][1],All[idx][2],work[0]+All[idx][0],work[1]+All[idx][1],work[2]+All[idx][2]);
work[0] += All[idx][0];
work[1] += All[idx][1];
work[2] += All[idx][2];
flag++;
}
idx++;
if(idx == 5) idx = 0;
}
}
XOSCATS银行家算法
最新推荐文章于 2024-11-04 19:24:37 发布