#include <bits/stdc++.h>
#define ALL(x) x.begin(),x.end()
using namespace std;
typedef long long ll;
typedef __int128_t lll;
lll maxi;
ll n,x;
bool cmp(vector<lll> a,vector<lll> b){
return a[0]*b[1]<a[1]*b[0];
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin >> n;
vector<vector<lll>> points(n,{0,0,0});
for(lll i=0;i<n;i++){
cin >> x;
points[i][0]=x;
cin >> x;
points[i][1]=x;
cin >> x;
points[i][2]=x;
}
for(lll i=0;i<n;i++){
for(lll j=i+1;j<n;j++){
pair<lll,lll> pendiente={points[j][1]-points[i][1],points[j][0]-points[i][0]};
if(pendiente.first==0){
//vertical
vector<pair<pair<lll,lll>,lll>> nums(n);
for(int k=0;k<n;k++){
nums[k]={{points[k][1],points[k][2]},k};
}
sort(ALL(nums));
lll sum=0;
for(int k=0;k<n;k++){
maxi=max(maxi,sum=max(nums[k].first.second,sum+nums[k].first.second));
}
sum=0;
for(int k=1;k<n;k++){
if((nums[k].second==i && nums[k-1].second==j)||(nums[k].second==j && nums[k-1].second==i)){
swap(nums[k],nums[k-1]);
}
}
for(int k=0;k<n;k++){
maxi=max(maxi,sum=max(nums[k].first.second,sum+nums[k].first.second));
}
}else{
vector<pair<pair<lll,lll>,lll>> nums(n);
for(lll k=0;k<n;k++){
nums[k]={{pendiente.first*points[k][0]-pendiente.second*points[k][1],points[k][2]},k};
}
sort(ALL(nums));
lll sum=0;
for(int k=0;k<n;k++){
maxi=max(maxi,sum=max(nums[k].first.second,sum+nums[k].first.second));
}
sum=0;
for(int k=1;k<n;k++){
if((nums[k].second==i && nums[k-1].second==j)||(nums[k].second==j && nums[k-1].second==i)){
swap(nums[k],nums[k-1]);
}
}
for(int k=0;k<n;k++){
maxi=max(maxi,sum=max(nums[k].first.second,sum+nums[k].first.second));
}
}
}
}
cout << (ll)maxi;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |