bzoj1637 [Usaco2007 Mar]Balanced Lineup

题目

诶,国庆节玩了四天吧,几乎并没有干和学习有关的事233。

5号开始做noip历年提高组的题,回想自己去年和前年多么的弱,哎。。
要是当时能看出前年D1T2是tarjan裸题的话,初三就是一等了233。
算了,今年继续努力吧。

来刷刷水题。

类似中位数的一种做法,然后让区间和为0,做前缀和就好了。

学习学习结构体的重载。

慢呀。

#include<bits/stdc++.h>
#define N 50000
using namespace std;
struct cow{  
    int ind,val;  
    cow(int a=0,int b=0){  
        ind=a; val=b;  
    }  
    cow operator + (const cow &o){  
        return cow(ind+o.ind,val);  
    }  
    bool operator < (const cow &o)const{
        return val<o.val;
    }
}A[N+5],f[N+5];  
int n,mx;
int main()
{
    freopen("in.txt","r",stdin);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)scanf("%d%d",&A[i].ind,&A[i].val);
    sort(A+1,A+n+1);
    for(int i=1;i<=n;i++)if(A[i].ind==0)A[i].ind=-1;
    f[0]=(0,0);
    for(int i=1;i<=n;i++)f[i]=A[i]+f[i-1];
    for(int i=0;i<=n;i++)
        for(int j=i+1;j<=n;j++)
            if(f[j].ind-f[i].ind==0)mx=max(mx,A[j].val-A[i+1].val);
    cout<<mx;
    return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值