任務執行順序

brucehb發表於2017-05-20
有N個任務需要執行,第i個任務計算時佔R[i]個空間,而後會釋放一部分,最後儲存計算結果
需要佔據O[i]個空間(O[i] < R[i])。
例如:執行需要5個空間,最後儲存需要2個空間。給出N個任務執行和儲存所需的空間,
問執行所有任務最少需要多少空間。
Input
第1行:1個數N,表示任務的數量。(2 <= N <= 100000)
第2 - N + 1行:每行2個數R[i]和O[i],分別為執行所需的空間和儲存所需的空間。(1 <= O[i] < R[i] <= 10000)
Output
輸出執行所有任務所需要的最少空間。
Input示例
20
14 1
2 1
11 3
20 4
7 5
6 5
20 7
19 8
9 4
20 10
18 11
12 6
13 12
14 9
15 2
16 15
17 15
19 13
20 2
20 1
Output示例

135

#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    int a, b;
    cin >> a >> b;
    int minSpace = a-b;
    int maxSpace = a-b;
    long long int result = b;
    int maxSum = a;
    
    for (int i = 1; i < n; i++)
    {
        cin >> a >> b;
        int temp = a-b;
        if (temp < minSpace)
        {
            minSpace = temp;
        }
        else if (temp > maxSpace)
        {
            maxSpace = temp;
            maxSum = a;
        }
        
        result += b;
    }
    
    result += minSpace;
    if (result < maxSum)
    {
        result = maxSum;
    }
    
    cout << result << endl;
    
	return 0;
}


相關文章