QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#784723 | #692. Delete the Points | ydzr00000 | RE | 0ms | 0kb | C++17 | 2.3kb | 2024-11-26 15:48:10 | 2024-11-26 15:48:18 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
struct Point{
int x,y;
friend inline bool operator<(const Point &P,const Point &Q)
{
return P.x==Q.x?P.y<Q.y:P.x<Q.x;
}
}a[3001];
inline void solve()
{
int n;
scanf("%d",&n);
set<Point>st;
for(int i=1;i<=n;i++)
{
scanf("%d %d",&a[i].x,&a[i].y);
st.insert(a[i]);
}
puts("Yes");
for(int i=1;i<=n/2;i++)
{
auto it=st.end();
it--;auto P=*it;
it--;auto Q=*it;
if(P.x==Q.x)
{
int len=P.y-Q.y;
printf("%d %d %d %d\n",P.x,Q.y,P.x+len,P.y);
st.erase(P);st.erase(Q);
}
else if(Q.y<=P.y)
{
int len=max(P.x-Q.x,P.y-Q.y);
printf("%d %d %d %d\n",Q.x,Q.y,Q.x+len,Q.y+len);
st.erase(P);st.erase(Q);
}
else if((int)st.size()==2)
{
int len=max(P.x-Q.x,Q.y-P.y);
printf("%d %d %d %d\n",P.x,P.y,P.x-len,P.y+len);
st.erase(P);st.erase(Q);
}
else
{
it--;auto R=*it;
if(R.x==Q.x&&R.y>P.y)
{
int len=Q.y-R.y;
printf("%d %d %d %d\n",R.x,R.y,R.x+len,R.y+len);
st.erase(Q);st.erase(R);
}
else if(R.x==Q.x&&R.y==P.y)
{
int dx=P.x-R.x,dy=Q.y-P.y;
if(dx<dy)
{
printf("%d %d %d %d\n",R.x,R.y,R.x+dx,R.y+dx);
st.erase(R);st.erase(P);
}
else if(dx>dy)
{
printf("%d %d %d %d\n",R.x,R.y,R.x+dy,R.y+dy);
st.erase(R);st.erase(Q);
}
else
{
printf("%d %.1lf %d %.1lf\n",R.x,R.y-0.5,R.x+dx,R.y+dx-0.5);
st.erase(R);st.erase(P);
}
}
else
{
int len=max(P.x-Q.x,Q.y-P.y);
printf("%d %d %d %d\n",Q.x,P.y,Q.x+len,P.y+len);
st.erase(P);st.erase(Q);
}
}
}
assert(st.empty());
}
int main(){
int t;
scanf("%d",&t);
while(t--)
solve();
return 0;
}
詳細信息
Test #1:
score: 0
Runtime Error
input:
4 1 1 2 2 5 5 6 6