QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#94918 | #4368. Oil | nixnehc1 | WA | 2ms | 3756kb | C++14 | 1.3kb | 2023-04-08 10:43:01 | 2023-04-08 10:43:03 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2010;
int n,ans;
struct Point
{
int x,y;
friend inline Point operator + (const Point &a,const Point &b) {return (Point){a.x+b.x,a.y+b.y};}
friend inline Point operator - (const Point &a,const Point &b) {return (Point){a.x-b.x,a.y-b.y};}
friend inline int operator * (const Point &a,const Point &b) {return a.x*b.y-a.y*b.x;}
friend inline bool operator == (const Point &a,const Point &b) {return (a.x==b.x)&(a.y==b.y);}
};
struct Line
{
Point a,b;
}a[N];
int sign(int x)
{
if(x<0) return -1;
if(x>0) return 1;
return 0;
}
int work(Point A,Point B)
{
int ans=0;
for(int i=1;i<=n;i++)
if(sign((a[i].a-A)*(B-A))*sign((a[i].b-A)*(B-A))!=1) ans+=abs(a[i].b.x-a[i].a.x);
return ans;
}
signed main(void)
{
scanf("%lld",&n);
for(int i=1;i<=n;i++)
{
int x0,x1,y;
scanf("%lld%lld%lld",&x0,&x1,&y);
a[i]=(Line){(Point){x0,y},(Point){x1,y}};
}
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
if(a[i].a.y!=a[j].a.y) ans=max({ans,work(a[i].a,a[j].a),work(a[i].a,a[j].b),work(a[i].b,a[j].a),work(a[i].b,a[j].b)});
printf("%lld\n",ans);
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 3604kb
input:
5 100 180 20 30 60 30 70 110 40 10 40 50 0 80 70
output:
200
result:
ok single line: '200'
Test #2:
score: 0
Accepted
time: 2ms
memory: 3588kb
input:
3 50 60 10 -42 -42 20 25 0 10
output:
25
result:
ok single line: '25'
Test #3:
score: -100
Wrong Answer
time: 2ms
memory: 3756kb
input:
1 -100 180 20
output:
0
result:
wrong answer 1st lines differ - expected: '280', found: '0'