## Describe

“Waiting for orders we held in the wood, word from the front never
came By evening the sound of the gunfire was miles away Ah softly we
moved through the shadows, slip away through the trees Crossing their
lines in the mists in the fields on our hands and our knees And all
that I ever, was able to see The fire in the air, glowing red,
silhouetting the smoke on the breeze”

## Input

There will be multiple test cases in the input file. Every test case starts with an integer N (1 ≤ N ≤ 1000), denoting the number of soldiers. Each of the following N lines describe a soldier with two integers B (1 ≤ B ≤ 10000) & J (1 ≤ J ≤ 10000). B seconds are needed to brief the soldier while completing his job needs J seconds. The end of input will be denoted by a case with N = 0. This case should not be processed.

## Output

For each test case, print a line in the format, ‘Case X: Y ’, where X is the case number & Y is the total number of seconds counted from the start of your first briefing till the completion of all jobs.

3
2 5
3 2
2 1
3
3 3
4 4
5 5
0

Case 1: 8
Case 2: 15

## My solution

#include<iostream>
#include<algorithm>
#define MAXN 1001

using namespace std;

struct solider{
int give;
int work;
}soliders[MAXN];

bool cmp(solider a,solider b){
if(a.work > b.work){
return true;
}
return false;
}

int main(){
int case_number = 1;
int n;
cin >> n;
while (n!=0) {
int giveSum = 0;
int ans = 0;
for (int i = 0; i < n; i++) {
cin>>soliders[i].give>>soliders[i].work;
}
sort(soliders,soliders+n,cmp);
for (int i = 0; i < n; i++) {
giveSum+=soliders[i].give;
if(giveSum + soliders[i].work > ans){
ans = giveSum + soliders[i].work;
}
}
cout<<"Case "<<case_number<<": "<<ans<<'\n';
case_number ++;
cin >> n;
}
return 0;
}