Who is the Smartest Man
Problem Description
Cao Cao is very pround of his newly finished book named "The Book of Mengde". He thinks the book contains all the wisdom of the world. But in order to prove this, he need to prove that he is the smartest people in the world first. In that age, people evaluate the intelligence of a man by his eloquence. So, Cao Cao begins tomake a plan to argue with some famous person, like Guo Jia, Xun Yu and so on.Soon he realizes that the hardest opponent is Zhuge Liang. So he decide to make it the last opponent. Once he defeat Zhuge Liang in the argument. he will beconsider the smartest man in the world and his book will be the best book.
Now, Cao Cao knows the intelligent point of himself and everyone he want to argue with before Zhuge Liang. And he knows that if he wins an argument. His intelligent point will increase because he can learn something from the argument. If he defeats a opponent whose intelligent point is higher than his, his intelligentpoint will increase by 2. If the intelligent point of the opponent is nothigher than his, his intelligent point will only increase by 1.
Now, Cao Cao wants to know, what's the maximum intelligent point he could reach before he meets Zhuge Liang, assuming that he can win each argument before he meets Zhuge Liang.
Input
This problem contains multiple test cases. The first line of each case contains two postive integer N ( N <= 500) and IP . N is the number of people Cao Cao wants to argue with before he meets Zhuge Liang. IP is the intelligent point of Cao Cao at the begining. Then N postive integers followed describing the intelligent point of each opponent. Each intelligent point will be no higher than 1000.
Output
For each case, output the maximum intelligent point Cao Cao can reach before he argue with Zhuge Liang.
Sample Input
5 91
88 90 92 94 98
Sample Output
99#include <stdio.h>
void swap(int[], int, int);
void qsort(int [],int, int);
int n,i,op,j,k,lp;
int a[1000]={0},out[10000]={0};
int main(void)
{
j=0;
while (scanf("%d%d",&n,&lp)!=EOF)
{
for (i=0;i<n;i++)
scanf("%d",&a[i]);
qsort(a, 0, n-1);
op=0;
for (i=0;i<n;i++)
{
if (lp>=a[i]) op=op+1;
else if (lp<a[i]) lp=lp+2;
}
out[j++]=lp+op;
}
for (j=0;j<10000;j++)
{
if (out[j]!=0)
printf("%d\n",out[j]);
}
system("pause");
return 0;
}
void qsort(int a[], int left, int right)
{
int i,j,k,last;
if(left >= right)
return;
i = (left + right)/2;
swap(a,left, i);
last = left;
for(i = left+1; i<=right; i++)
{
if(a[i] < a[left])
swap(a,++last, i);
}
swap(a,last,left);
qsort(a,left,last-1);
qsort(a,last+1, right);
}
void swap(int a[], int i, int j)
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}