protagonist

美术展览

#2348. 「JOI 2018 Final」美术展览

内存限制:256 MiB时间限制:1000 ms标准输入输出
题目类型:传统评测方式:文本比较
上传者: 匿名

题目描述

JOI 国将举行美术展,在美术展中将展出来自全国各地的各种美术品。

现在有  件候选美术品,编号为  至 。每件艺术品有描述其尺寸与价值的两个整数,第  件艺术品的尺寸为 ,其价值为 

美术展至少有一件美术品被选中并展示,并且举办美术展的展览馆足够大,所以展出所有的  件美术品也是可行的。为了符合 JOI 国人民的审美,我们想使得参展的美术品之间的尺寸之差不能太大。并且,我们想使得参展的美术品价值之和尽量大。因此,我们决定按照以下方式选定参展的美术品:

在参展美术品中,令  为所选美术品中最大的尺寸, 为所选美术品中最小的尺寸。令  为所有参展美术品的总价值之和。给出候选美术品的数量以及其尺寸与价值,求  的最大值。

输入格式

从标准输入中读取数据。

第一行包括一个整数 ,表示有  件候选美术品。

接下来  行,第  行给出两个整数 ,表示第  件美术品的尺寸与价值。

输出格式

输出数据到标准输出中。

输出一行一个整数,表示  的最大值。

样例

样例输入 1
3
2 3
11 2
4 5
样例输出 1
6
#include <bits/stdc++.h>
#include<map>
#include<set>
using namespace std;
const int maxn=1e6;
typedef long long ll;
int n;
pair<ll,int>cur[maxn];
int main() {
    cin>>n;
    for(int i=1;i<=n;i++)scanf("%lld%d",&cur[i].first,&cur[i].second);
    ll ans=0,pre=-0x3f3f3f3f,psum=0;
    sort(cur+1,cur+1+n);
    for(int i=1;i<=n;i++){
        pre=max(pre,-psum+cur[i].first);
        psum+=cur[i].second;
        ans=max(ans,pre+psum-cur[i].first);
    }
    cout<<ans<<endl;
    return 0;
}

 

posted @ 2019-03-28 00:09  czy-power  阅读(283)  评论(0编辑  收藏  举报