Description
There is a classic riddle where you are given two eggs and a k-floor building and you want to knowthe highest floor from which you can drop the egg and not have it break.
It turns out that you have stumbled upon some logs detailing someone trying this experiment!The logs contain a series of floor numbers as well as the results of dropping the egg on those floors.You need to compute two quantities—the lowest floor that you can drop the egg from where theegg could break, and the highest floor that you can drop the egg from where the egg might not break.
You know that the egg will not break if dropped from floor 1, and will break if dropped fromfloor k. You also know that the results of the experiment are consistent, so if an egg did not breakfrom floor x, it will not break on any lower floors, and if an egg did break from floor y, it will breakon all higher floors.
Input
The first line of input contains two space-separated integers n and k (1 ≤ n ≤ 100, 3 ≤ k ≤ 100),the number of egg drops and the number of floors of the building, respectively. Each of the followingn lines contains a floor number and the result of the egg drop, separated by a single space. Thefloor number will be between 1 and k, and the result will be either SAFE or BROKEN.
Output
Print, on a single line, two integers separated by a single space. The first integer should be thenumber of the lowest floor from which you can drop the egg and it could break and still be consistentwith the results. The second integer should be the number of the highest floor from which you candrop the egg and it might not break.
Sample Input
2 10
4 SAFE
7 BROKEN
Sample Output
5 6
Sample Input
3 5
2 SAFE
4 SAFE
3 SAFE
Sample Output
5 4
Sample Input
4 3
2 BROKEN
2 BROKEN
1 SAFE
3 BROKEN
Sample Output
2 1
题解:分别记录安全和破碎最大最小楼层,判断输出。
代码如下:
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <math.h>
using namespace std;
int main()
{
int m,n,a[101]={0};
char b[101][10]={0};
cin>>m>>n;
int max=1,min=n;
for(int i=0;i<m;i++)
{
cin>>a[i]>>b[i];
if(b[i][0]=='S'&&max<a[i])
max=a[i];
else if(b[i][0]=='B'&&min>a[i])
min=a[i];
}
if(max+1==min)
cout<<min<<" "<<max<<endl;
else
cout<<max+1<<" "<<min-1<<endl;
return 0;
}