Submission #1353048

#TimeUsernameProblemLanguageResultExecution timeMemory
1353048SkymagicRoller Coaster Railroad (IOI16_railroad)C++17
Compilation error
0 ms0 KiB
/*******************
* what  the  sigma *
********************/
#pragma GCC optimize("O3","unroll-loops")
#include <iostream>
#include <vector>
#include <map>
#include <chrono>
#include <set>
#include <queue>
#include <algorithm>
#include <stack>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ordered_set(x) tree<x, null_type, less<x>, rb_tree_tag, tree_order_statistics_node_update>
using namespace std;
#define lgm cin.tie(0)->sync_with_stdio(0);
#define be(x) x.begin(),x.end()
#define ve vector
#define ll long long
#define ld long double
bool enabledb=0;
#define DB(CODE) cout<<'\t'<<CODE<<endl;
#define SP <<' '<<
#define ull unsigned ll
#define f first
#define s second
#define pii pair<int, int>
#define tii tuple<int,int,int>
#define pll pair<ll,ll>
#define tll tuple<ll,ll,ll>
#define sz(x) ((int)x.size())
#define pb push_back
const ll mod = 998244353,maxn=200005,root=3;
const ll INF=(ll)2e18;

// ve<int> t(maxn*4);
// int n;
// void add(int u,int l,int r,int idx,int v) {
//     if (l==r) {t[u]+=v;return;}
//     int mid=(l+r)>>1;
//     if (mid+1<=idx) {
//         add(u<<1|1,mid+1,r,idx,v);
//     }
//     if (mid>=idx) {
//         add(u<<1,l,mid,idx,v);
//     }
//     t[u]=min(t[u<<1],t[u<<1|1]);
// }
// void add(int idx,int v) {
//     add(1,0,n,idx,v);
// }
// int qry(int u,int l,int r,int tl,int tr) {
//     if (l>tr||r<tl) return 1e9;
//     if (l>=tl&&r<=tr) {
//         return t[u];
//     }
//     int mid=(l+r)>>1;
//     return min(qry(u<<1,l,mid,tl,tr),qry(u<<1|1,mid+1,r,tl,tr));
// }
// int qry(int l,int r){
//     return qry(1,0,n,l,r);
// }
ve<pll> ed[maxn];
int main() {
    lgm;
    int n;
    cin >> n;
    if (n<=8) {
        ve<pll> a(n);
        for (int i=0;i<n;i++) {
            cin >> a[i].f >> a[i].s;
        }
        sort(be(a));
        ll ans=1e18;
        do {
            ll asn=0;
            for (int i=1;i<n;i++) {
                asn+=max(0ll,a[i-1].s-a[i].f);
            }
            ans=min(ans,asn);
        } while (next_permutation(be(a)));
        cout << ans;
        return 0;
    }
    if (n<=16) {
        ve<pll> a(n);
        for (int i=0;i<n;i++) {
            cin >> a[i].f >> a[i].s;
        }
        sort(be(a));
        ll ans=1e18;
        ve<ve<ll>> dp((1<<n),ve<ll>(n,1e9));
        for (int i=0;i<n;i++) {
            dp[(1<<i)][i]=0;
        }
        for (int i=1;i<(1<<n);i++) {
            for (int j=0;j<n;j++) {
                if (i&(1<<j)) continue;
                for (int k=0;k<n;k++) {
                    if (i&(1<<k)&&k!=j) {
                        dp[i|(1<<j)][j]=min(dp[i|(1<<j)][j],dp[i][k]+max(0ll,a[k].s-a[j].f));
                    }
                }
            }
        }
        ans=1e9;
        for (int i=0;i<n;i++) {
            ans=min(ans,dp[(1<<n)-1][i]);
        }
        cout << ans;
        return 0;
    }
    ve<pll> a(n);
    for (int i=0;i<n;i++) {
        cin >> a[i].f >> a[i].s;
    }
    sort(be(a));
    bool no=0;
    for (int i=1;i<n;i++) {
        if (a[i].f<a[i-1].s) {
            no=1;break;
        }
    }
    if (no) {
        cout << "998244353\n";
    } else {
        cout << "0";
    }
}

Compilation message (stderr)

/usr/bin/ld: /tmp/cc4fxgmW.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccPydHKZ.o:railroad.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/cc4fxgmW.o: in function `main':
grader.cpp:(.text.startup+0x103): undefined reference to `plan_roller_coaster(std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status