Submission #1198893

#TimeUsernameProblemLanguageResultExecution timeMemory
1198893simplemind_31Bulldozer (JOI17_bulldozer)C++20
0 / 100
29 ms332 KiB
#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<lll,lll>> nums(n);
                for(int k=0;k<n;k++){
                    nums[k]={points[k][0],points[k][2]};
                }
                sort(ALL(nums));
                lll sum=0;
                for(int k=0;k<n;k++){
                    maxi=max(maxi,sum=max(nums[k].second,sum+nums[k].second));
                }
            }else{
                vector<pair<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]};
                }
                sort(ALL(nums));
                lll sum=0;
                for(int k=0;k<n;k++){
                    maxi=max(maxi,sum=max(nums[k].second,sum+nums[k].second));
                }
            }
            swap(points[i],points[j]);
            if(pendiente.first==0){
                //vertical
                vector<pair<lll,lll>> nums(n);
                for(int k=0;k<n;k++){
                    nums[k]={points[k][0],points[k][2]};
                }
                sort(ALL(nums));
                lll sum=0;
                for(int k=0;k<n;k++){
                    maxi=max(maxi,sum=max(nums[k].second,sum+nums[k].second));
                }
            }else{
                vector<pair<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]};
                }
                sort(ALL(nums));
                lll sum=0;
                for(int k=0;k<n;k++){
                    maxi=max(maxi,sum=max(nums[k].second,sum+nums[k].second));
                }
            }
            swap(points[i],points[j]);
        }
    }
    cout << (ll)maxi;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...