# 實作題 - 購物車 - APCS - by Peter Wang ## 題目資訊 此題為2020.7測驗中的題目1 ###### tags: `APCS` ## 題目敘述 給兩個整數 a, b 代表你要觀察的商品編號。 商場在每一位客人的購物車都放置了一個感應器,能夠得知每位客人將商品放入購物車或拿出購物車。感應器存放的紀錄是一連串的整數,一個正整數 x 表示這位客人將一個編號是 x 的商品放入他的購物車,一個負數 −x 表示這位客人將一個編號是 x 的商品從他的購物車移除。 現在有 n 位客人的購物車紀錄,你想要統計有幾位客人最後有購買商品 a 與商品 b,一個客人有購買商品 x 表示商品 x 在他的購物車中放入的次數比拿出還多。 ### 輸入: 第一行有兩個正整數 a, b (1≤a,b≤100)。 第二行有一個正整數 n(1≤n≤100),表示客人的數量。 接下來有 n 行,第 i 行表示第 i 位客人的購物車紀錄。 對於每個購物車紀錄包含一連串的整數,最後一個數字必定為 0,表示購物紀錄結尾,其他數字必定為非 0 的整數且絕對值不超過 100,定義同題目敘述。 ### 輸出: 輸出一個整數,表示有幾位客人同時有購買商品 a 與商品 b。 ## 解題思路 按照題意實際操作購買與放回,就能完成實作。 ## 程式碼 ```clike= #include<iostream> #include<vector> #include<string.h> using namespace std; int main(){ int a; while(cin>>a){ int b; cin>>b; int n; cin>>n; int x; int arr[2]; int y=0; memset(arr,0,sizeof(arr)); for(int i=0;i<n;i++){ while(cin>>x){ if(x==0){ if(arr[0]>0 && arr[1]>0){ y++; } break; } else{ if(x==a){ arr[0]++; } else if(x==-a){ arr[0]--; } else if(x==b){ arr[1]++; } else if(x==-b){ arr[1]--; } } } arr[0]=0; arr[1]=0; } cout<<y<<endl; } } ``` ## 資料來源 [zerojudge](https://zerojudge.tw/) [題目敘述](https://zerojudge.tw/ShowProblem?problemid=f579) ## 備註 >[name=PeterWang] >[time=Sat, Jun 19, 2021 1:46 PM]