백준 1027 고층 건물
https://www.acmicpc.net/problem/1027
모든 고층 빌딩에 대하여 보이는 빌딩의 수를 구할 수 있습니다.
보이는 빌딩의 수를 구하는 과정은 간단합니다.
i번째 빌딩에 대하여 i-1,i-2, … ,1 빌딩의 기울기를 구합니다. 현재까지 기울기의 최댓값보다 큰 기울기가 나왔을때만 그 빌딩이 보인다고 할 수 있습니다.
같은 방식으로 i+1, … ,n 빌딩의 기울기를 구해줍니다.
#include<bits/stdc++.h>
using namespace std;
const int SZ=55;
const double INF=1e9+5;
int arr[SZ];
int main(void){
ios::sync_with_stdio(false); cin.tie(NULL);
int n; cin>>n;
for(int i=1;i<=n;i++) cin>>arr[i];
int ans=0;
for(int i=1;i<=n;i++){
int tmp=0;
double mn=INF;
for(int j=i-1;j>=1;j--){
double xx=(double)(arr[j]-arr[i])/(double)(j-i);
if(xx<mn){
tmp++;
mn=xx;
}
}
double mx=-INF;
for(int j=i+1;j<=n;j++){
double xx=(double)(arr[j]-arr[i])/(double)(j-i);
if(xx>mx){
tmp++;
mx=xx;
}
}
ans=max(ans,tmp);
}
cout<<ans;
return 0;
}