# 實作題 - 物品堆疊 - APCS - by Peter Wang ## 題目資訊 此題為2017.10.18測驗中的題目4 ###### tags: `APCS` ## 題目敘述 ![](https://i.imgur.com/yhVEb50.jpg) ### 輸入: 輸入的第一行是物品件數N。 第二行有N個正整數,依序是各物品的重量w(1)、w(2)、...、w(N),重量皆不超過1000且以一個空白間隔。 第三行有N個正整數,依序是各物品的取用次數f(1)、f(2)、...、f(N),次數皆為1000以內的正整數,以一個空白間隔。 ### 輸出: 輸出最小能量消耗值,以換行結尾。 所求答案不會超過63個位元所能表示的正整數。 ## 解題思路 先做好排序的預處理,再按照順序相加,即得到答案。 ## 程式碼 ```clike= #include<iostream> #include<algorithm> using namespace std; bool cmp(pair<int,int> p1,pair<int,int> p2){ return p1.first*p2.second<p1.second*p2.first; } int main(){ long long n; while(cin>>n){ pair<long long,long long> p[n]; for(int i=0;i<n;i++){ cin>>p[i].first; } for(int i=0;i<n;i++){ cin>>p[i].second; } sort(p,p+n,cmp); long long total=0; long long en=0; for(int i=0;i<n-1;i++){ total+=p[i].first; en+=total*p[i+1].second; } cout<<en<<endl; } } ``` ## 資料來源 [zerojudge](https://zerojudge.tw/) [題目敘述](https://zerojudge.tw/ShowProblem?problemid=c471) ## 備註 >[name=PeterWang] >[time=Mon, Jun 14, 2021 10:40 AM]