社区讨论

HELP,对拍了半天没错,只有二十,求助

P2698[USACO12MAR] Flowerpot S参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mi6hjjn2
此快照首次捕获于
2025/11/20 04:59
4 个月前
此快照最后确认于
2025/11/20 04:59
4 个月前
查看原帖
CPP
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;
#define fo(a,b,c) for(int a=b;a<=c;a++)
#define go(a,b,c) for(int a=b;a>=c;a--)
int read(){
    int a=0,f=0;char c=getchar();
    for(;c<'0'||c>'9';c=getchar())if(c=='-')f=1;
    for(;c>='0'&&c<='9';c=getchar())a=a*10+c-'0';
    return f?-a:a;
}
int min(int a,int b){return a<b?a:b;}
int max(int a,int b){return a>b?a:b;}
const int N=1e5+1;
struct node{int pla,time;}drop[N];
int cmp(node a,node b){return a.pla<b.pla;}
deque<node>qmax,qmin;
int main(){
    int n=read(),d=read(),ans=1e6;
    fo(i,1,n)drop[i]=(node){read(),read()};
    sort(drop+1,drop+n+1,cmp);
    int l=1;
    fo(i,1,n){
        while(!qmax.empty()&&qmax.front().time<drop[i].time)qmax.pop_back();
        qmax.push_back(drop[i]);
        while(!qmin.empty()&&qmin.front().time>drop[i].time)qmin.pop_back();
        qmin.push_back(drop[i]);
        while(!qmax.empty()&&!qmin.empty()&&qmax.front().time-qmin.front().time>=d){
            ans=min(ans,abs(qmax.front().pla-qmin.front().pla));
            if(qmax.front().pla>qmin.front().pla)qmin.pop_front();
            else if(qmax.front().pla<qmin.front().pla)qmax.pop_front();
            else qmin.pop_front(),qmax.pop_front();
        }
    }
    printf("%d",ans==1e6?-1:ans);
    return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...