Problem Description
“是的。”
“那你幹什麼呢?”
“看世界盃呀,笨蛋!”
“@#$%^&*%...”
確實如此,世界盃來了,球迷的節日也來了,估計很多ACMer也會拋開電腦,奔向電視了。
作爲球迷,一定想看盡量多的完整的比賽,當然,作爲新時代的好青年,你一定還會看一些其它的節目,比如新聞聯播(永遠不要忘記關心國家大事)、非常6+7、超級女生,以及王小丫的《開心辭典》等等,假設你已經知道了所有你喜歡看的電視節目的轉播時間表,你會合理安排嗎?(目標是能看盡量多的完整節目)
Input
Output
Sample Input
12 1 3 3 4 0 7 3 8 15 19 15 20 10 15 8 18 6 12 5 10 4 14 2 9
0
只要每一步的選取都保證剩餘時間最大,
便是最優解,因爲這樣每一步都最優的,
結果自然也是最優的。也就是說,
每回你都要找一個結束最早的。
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
int bbs,n,i,j,s[110],a[110];
while(cin>>n)
{
if(n==0) break;
for(i=1;i<=n;i++)
{
cin>>s[i];
cin>>a[i];
}
for(i=1;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
int t=s[i];s[i]=s[j];s[j]=t;
t=a[i];a[i]=a[j];a[j]=t;
}
}
}
int sum=0,top=0;
for(i=1;i<=n;i++)
{
if(s[i]>=top)
{
sum++;
top=a[i];
}
}
cout<<sum<<endl;
}
return 0;
}