【CYH-02】NOIp考砸后虐题赛:坐标:题解

代码:

这道题也并不难,用排序+简单动规即可。因为@Kevin_Wa 大佬放的是c++,所以我来一发Pascal。

var min,max,i,a1,b1,c1,d1,n:longint;
a,b,c,d:array[0..500000] of int64;
procedure sort(l,r: longint);
var i,j,x,y,y1,y2,y3:longint;
begin
i:=l;j:=r;x:=a[(l+r) div 2];y1:=b[(l+r) div 2];
y2:=c[(l+r) div 2];y3:=d[(l+r) div 2];
repeat
 while (a[i]<x)or((a[i]=x)and(b[i]<y1))or((a[i]=x)and(b[i]=y1)and(c[i]<y2))
 or((a[i]=x)and(b[i]=y1)and(c[i]=y2)and(d[i]<y3))  do inc(i);
 while (x<a[j])or((x=a[j])and(y1<b[j]))or((x=a[j])and(y1=b[j])and(y2<c[j]))
 or((x=a[j])and(y1=b[j])and(y2=c[j])and(y3<d[j]))  do dec(j);
 if not(i>j) then
   begin
   y:=a[i];a[i]:=a[j];a[j]:=y;
   y:=b[i];b[i]:=b[j];b[j]:=y;
   y:=c[i];c[i]:=c[j];c[j]:=y;
   y:=d[i];d[i]:=d[j];d[j]:=y;
   inc(i);j:=j-1;
   end;
until i>j;
if l<j then sort(l,j);
if i<r then sort(i,r);
end;
begin
readln(n);
for i:=1 to n do
  begin
  read(a1,b1,c1,d1);
  a[i]:=b1-a1;b[i]:=c1-a1;c[i]:=d1-a1;
  d[i]:=i;
  end;
sort(1,n);
min:=maxlongint;
max:=-maxlongint;
for i:=2 to n do
  if (a[i]=a[i-1])and(b[i]=b[i-1])and(c[i]=c[i-1]) then
    begin
    if (d[i]-d[i-1]<min) then min:=d[i]-d[i-1];
    if (d[i]+d[i-1]>max) then max:=d[i]+d[i-1];
    end;
writeln(min,' ',max);
close(input);close(output);
end.

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-26 18:54
说等下个版本吧的发呆爱好者很贪睡:佬最后去了哪家呀
点赞 评论 收藏
分享
11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务