1. 程式人生 > >city skyline【單調棧】

city skyline【單調棧】

題目連結 單調棧(維護單調遞增)。 矩形的寬度與答案無關,我們只需處理矩形的高度。 在這裡插入圖片描述

code

#include<bits/stdc++.h>
using namespace std;
int h[50005],x,n,w;
int ans,s[50005],top;
inline int read() {
	int x=0,f=1; char c=getchar();
	while(c<'0'||c>'9') {if(c=='-')f=-1; c=getchar();}
	while(c>='0'&&c<='9') {x=(x<<3)+(x<<
1)+c-'0'; c=getchar();} return x*f; } int main() { freopen("skyline.in","r",stdin); freopen("skyline.out","w",stdout); n=read(); w=read(); for(int i=1;i<=n;i++) x=read(),h[i]=read(); ans=n; for(int i=1;i<=n;i++ ){ while(s[top]>h[i]&&top) top--; if(s[top]==h[i]) ans--; else
s[++top]=h[i]; } printf("%d",ans); return 0; }