Submission #340427

#TimeUsernameProblemLanguageResultExecution timeMemory
340427Ahmad_HasanCover (COCI18_cover)C++17
72 / 120
79 ms1004 KiB
#include <bits/stdc++.h>
using namespace std;

bool comp(pair<int,int>a,pair<int,int>b){
    if(a.first==b.first)
        return a.second>b.second;
    return a.first>b.first;
}
vector<pair<long long,long long> >vps;

int n;
vector<long long >dp;
long long slv(int cr=0){
    if(cr>=n)
        return 0ll;
    if(dp[cr]!=-1ll)
        return dp[cr];
    long long ret=1e17;
    int nwcr=cr+1;
    ret=vps[cr].first*vps[cr].second+slv(nwcr);
    while(nwcr<n) {
        ret=min(ret,max(vps[cr].first,vps[nwcr].first)* max(vps[cr].second,vps[nwcr].second)+slv(nwcr+1));
        nwcr++;
    }
    return dp[cr]=ret;
}

int main()
{

    ios_base::sync_with_stdio(0);
    cin.tie(0);      cout.tie(0);
    cin>>n;
    vps=vector<pair<long long,long long> >(n);
    for(int i=0;i<n;i++){
        cin>>vps[i].first>>vps[i].second;
        vps[i].first=abs(vps[i].first);
        vps[i].second=abs(vps[i].second);
    }

    sort(vps.begin(),vps.end(),comp);
    dp=vector<long long>(5000,-1ll);

    cout<<4*slv()<<'\n';

    return 0;
}/**
3
19 7
30 9
10 25

*/
#Verdict Execution timeMemoryGrader output
Fetching results...