#include<iostream>
using namespace std;
const int MAX_BUSNUMBER = 51;
const int MAX_STATIONNUM = 42;
void Tocheck(int busNum, int stationNum, int busLimit, int type1, int type2, int type3, int carStatus[][MAX_STATIONNUM]);
int main()
{
int stationNum, busNum, busLimit = 0;
int type1 = 0, type2 = 0, type3 = 0;//這個是配合到時候輸出格式設定的變數
int carStatus[MAX_BUSNUMBER][MAX_STATIONNUM] = {{0},{0}};//首先先定義所以會用到的函數
//由於我想在一組二維陣列當中塞入所有的數據並且由配合列車的編號因此我將陣列的長度設定成了[][2*21]
cin >> stationNum >> busNum >> busLimit;//照著給的數據輸入
/*
下面這個迴圈是讓我能夠照著題目的敘述輸入進這個陣列
首先把[I][0]當作儲存初始人數的位置,所以只放在第一層迴圈
而後面我的想法是把上車人數跟下車人數分別放在陣列當中的奇數位置跟偶數位置
而因為要重複輸入所以放在第二層迴圈當中
*/
for(int i = 1; i <= busNum; i++)
{
cin >> carStatus[i][0];
for(int j = 1; j < stationNum; j++)
{
cin >> carStatus[i][2 * j - 1];
}
for(int j = 1; j < stationNum; j++)
{
cin >> carStatus[i][2 * j];
}
}
Tocheck(busNum, stationNum, busLimit, type1, type2, type3, carStatus);
cout << type1 << "," << type2 << ","<< type3 << endl;
return 0;
}
void Tocheck(int busNum, int stationNum,int busLimit, int type1, int type2, int type3, int carStatus[][MAX_STATIONNUM])
{
//以下為分別記錄每台車各個紀錄的數據的迴圈
for(int i = 1; i <= busNum; i++)//這回圈在檢查每台車的狀態
{
int type = 0;//首先先定義一個存入每台車在每個車站的結果的變數
for(int j = 1; j < stationNum; j++)//這迴圈是在檢查在每站的情況
{
type = 0;//每次檢查的時候都要先初始化type的值 我找這裡的bug找超久
carStatus[i][0] -= carStatus[i][2 * j];
if(carStatus[i][0] < 0)//如果下車人數大於車上總人數的話那就先讓前面定義的type +1
type++;
carStatus[i][0] += carStatus[i][2 * j - 1];
if(carStatus[i][0] > busLimit)//如果車上的總人數大於負荷人數的話讓type +2
type += 2;
if(type != 0)//只要這台車當中有任何不合理的記錄的話那就跳出迴圈換下一台車
break;
}
//下面三行透過在以上程式獲得type的值來分配各種錯誤的分布
if(type == 1)
{
type1++;
}
else if(type == 2)
{
type2++;
}
else if(type ==3)
type3++;
}
}