[Gdgzezoi]問題A:小さなボール染色

説明

N-バッグは、各バッグは2つの白いボールで満たしました。2個の白いボール上記の袋の数iは、XI、YI 2つの数値を書かれていました。今染め赤と青の1に、各袋に2個のボールは、ボールに染色されました。2n個の外にボールを染色した後、定義します。

  • Rmaxが赤のボールの最大数です
  • Rminが赤のボールの最小数であります
  • Bmaxのは、最大のデジタル青いボールです
  • 青Bminの上のボールの最小数

さ(Rmax-Rminの)(Bmax-シーク Bminの) 最低。
入力は、
最初の行は、2つの数字のXI、YI(1≤xi、yi≤109)のn行続いて、整数N(1≤n≤2×105)であり 、 それは私の2つのバッグを示しボールの数字。
出力
出力線最小値(Rmaxは-Rminの)の整数を表す(Bmax- Bminの) の。
入力サンプルの
サンプル入力1:
3
1 2
3 4
5 6。

サンプル入力2:
3
1010 10
1000年1
20 1020

サンプル入力3:
2
1 1
1000000000 1000000000
サンプル出力
サンプル出力1:
15

出力例2:
380

。3出力サンプル:
999999998000000001
ヒントの
サンプル1は、最適解X1、X2、Y3赤Y2、Y2、X3ブルー染色であります

思考

色または最大/最小値としてながら、全体的な最大値と最小値を考慮し、または2つの異なる色の最大値/最小値です。これは明らかに、すべてのポイントの値の大きい方が別の色に染め小さい同じ色を、染めなければならない、比較的容易に処理することです。

グローバル最小値と最大値は、多くのトラブル同じ色であれば。あなたはこれらの2つの値が赤く染めている設定することをお勧めします。このとき、他のすべての値がない範囲の外に、赤く染めたことができます。したがって、各タップのためのポイント値に残っている問題は、最大マイナス最小青が最小ように、ブルー染色しました。

コード

#include<bits/stdc++.h>
#define N 220077
#define ll long long
using namespace std;
struct arr
{
    ll x,y;
}p[N];
ll n,Rmax,Rmin,Lmax,Lmin,r,l,Max,Min;
bool operator < (arr a,arr b)
{
    if(a.x==b.x)return a.y<b.y;
    return a.x<b.x;
}
ll solve1()
{
    Max=p[1].y,Min=p[1].x;r=1;l=1;
    for(int i=2;i<=n;i++)
    {
        if(p[i].x<Min)Min=p[i].x,l=i;
        if(p[i].y>Max)Max=p[i].y,r=i;
    }
    Rmax=Max;Lmin=Min;
    Rmin=p[l].y;Lmax=p[r].x;
    for(int i=1;i<=n;i++)
    {
        Rmin=min(Rmin,p[i].y);
        Lmax=max(Lmax,p[i].x);
    }
    return (ll)(Rmax-Rmin)*(Lmax-Lmin);
}
ll solve2(){
    Lmax=Max;
    Lmin=Min;
    Rmax=max(p[n].x,p[1].y);
    ll k=p[1].y;
    Rmin=min(p[1].y,p[2].x);
    ll ans=Rmax-Rmin;
    for(int i=2;i<=n-1;i++){
        k=min(k,p[i].y);
        Rmax=max(p[i].y,Rmax);
        Rmin=min(k,p[i+1].x);
        if(Rmax-Rmin<ans)ans=Rmax-Rmin;
    }
    return (ll)ans*(Lmax-Lmin);
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d%d",&p[i].x,&p[i].y);
        if(p[i].x>p[i].y)swap(p[i].x,p[i].y);
    }
    sort(p+1,p+n+1);
    ll ans=solve1();
    if(r!=l)ans=min(ans,solve2());
    printf("%lld",ans);
    return 0;
}

703元記事公開 ウォンの賞賛392 ビューに14万+を

おすすめ

転載: blog.csdn.net/Eric1561759334/article/details/100808376