93分求调
  • 板块灌水区
  • 楼主nzy2011
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/12 15:06
  • 上次更新2024/7/12 15:16:04
查看原帖
93分求调
976347
nzy2011楼主2024/7/12 15:06

P1578

我的代码:

#include<bits/stdc++.h>
// #define int long long
using namespace std;
inline int read() {int x=0,ff=1;char ch=getchar();while(ch<48||ch>57) {if(ch==45)ff=-1;ch=getchar();}while(ch>=48&&ch<=57) x=(x<<3)+(x<<1)+(ch^48),ch=getchar();return x*ff;}
int n,l,w,ans;
struct A{
    int x,y;
}a[10010];
bool cmp1(A x,A y){
    if(x.x==y.x)return x.y<y.y;
    else return x.x<y.x;
}
bool cmp2(A x,A y){
    if(x.y==y.y)return x.x<y.x;
    else return x.y<y.y;
}
signed main(){
    l = read();w = read();n = read();
    for(int i=1;i<=n;i++)a[i] = {read(),read()};
    a[++n] = {0,w},a[++n] = {l,0},a[++n] = {l,w},a[++n] = {0,0};
    sort(a+1,a+1+n,cmp1);
    for(int i=1;i<=n;i++){
        int x1 = a[i].x,y1 = 0,y2 = w;
        for(int j=i+1;j<=n;j++){
            ans = max(ans,(a[j].x-x1)*(y2-y1));
            if(a[j].y<a[i].y)y1 = max(y1,a[j].y);
            else y2 = min(y2,a[j].y);
        }
    }
    for(int i=n;i>=1;i--){
        int x1 = a[i].x,y1 = 0,y2 = w;
        for(int j=i-1;j>=1;j--){
            ans = max(ans,(a[j].x-x1)*(y2-y1));
            if(a[j].y<a[i].y)y1 = max(y1,a[j].y);
            else y2 = min(y2,a[j].y);
        }
    }
    sort(a+1,a+1+n,cmp2);
    for(int i=1;i<=n-1;i++)ans = max(ans,(a[i+1].y-a[i].y)*l);
    cout<<ans;
    return 0;
}
2024/7/12 15:06
加载中...