Submission #1102306

# Submission time Handle Problem Language Result Execution time Memory
1102306 2024-10-18T02:06:57 Z ro9669 Nile (IOI24_nile) C++17
34 / 100
31 ms 5456 KB
#include <bits/stdc++.h>
#define fi first
#define se second
#define all(v) v.begin() , v.end()
#define sz(v) int(v.size())
#define unq(v) sort(all(v)); v.resize(unique(all(v)) - v.begin());
#include "nile.h"
using namespace std;

typedef long long ll;
typedef pair<int , int> ii;
typedef pair<long long , int> lli;

const int maxN = int(2e5)+7;

int n , q;
ll dp[maxN];
vector<int> w , a , b , e , id;
vector<ll> res;

namespace sub1{
    bool check(){
        return (q <= 5 && n <= 2000);
    }

    void solve(){
        for (int d : e){
            dp[0] = 0;
            for (int i = 0 ; i < n ; i++){
                ll s = 0;
                int x = INT_MAX;
                dp[i + 1] = ll(1e18);
                for (int j = i ; j >= 0 ; j--){
                    s += b[id[j]];
                    x = min(x , a[id[j]] - b[id[j]]);
                    if (w[id[i]] - w[id[j]] <= d){
                        if ((i - j)&1){
                            dp[i + 1] = min(dp[i + 1] , dp[j] + s);
                        }
                        else{
                            dp[i + 1] = min(dp[i + 1] , dp[j] + s + 1ll * x);
                        }
                    }
                    else{
                        break;
                    }
                }
            }
            res.push_back(dp[n]);
        }
    }
}

namespace sub2{
    bool check(){
        return (q <= 5);
    }

    void solve(){
        for (int d : e){
            dp[0] = 0;
            for (int i = 0 ; i < n ; i++){
                dp[i + 1] = dp[i] + 1ll * a[id[i]];
                if (i - 1 >= 0 && w[id[i]] - w[id[i - 1]] <= d){
                    dp[i + 1] = min(dp[i + 1] , dp[i - 1] + 1ll * (b[id[i]] + b[id[i - 1]]));
                }
                if (i - 2 >= 0 && w[id[i]] - w[id[i - 2]] <= d){
                    dp[i + 1] = min(dp[i + 1] , dp[i - 2] + 1ll * (b[id[i]] + a[id[i - 1]] + b[id[i - 2]]));
                }
            }
            res.push_back(dp[n]);
        }
    }
}

vector<long long> calculate_costs(vector<int> _w , vector<int> _a , vector<int> _b , vector<int> _e){
    w = _w; a = _a; b = _b; e = _e;
    n = sz(w) , q = sz(e);
    id.resize(n);
    for (int i = 0 ; i < n ; i++) id[i] = i;
    sort(all(id) , [](int x , int y){
         return w[x] < w[y];
    });
    if (sub1::check()){
        sub1::solve();
        return res;
    }
    if (sub2::check()){
        sub2::solve();
        return res;
    }
    return res;
}

# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 20 ms 336 KB Output is correct
2 Correct 19 ms 336 KB Output is correct
3 Correct 19 ms 336 KB Output is correct
4 Correct 19 ms 336 KB Output is correct
5 Correct 24 ms 532 KB Output is correct
6 Correct 19 ms 336 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 24 ms 4952 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 27 ms 4952 KB Output is correct
2 Correct 29 ms 4944 KB Output is correct
3 Correct 31 ms 5140 KB Output is correct
4 Correct 29 ms 4936 KB Output is correct
5 Correct 28 ms 4944 KB Output is correct
6 Correct 27 ms 5128 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 20 ms 336 KB Output is correct
2 Correct 19 ms 336 KB Output is correct
3 Correct 19 ms 336 KB Output is correct
4 Correct 19 ms 336 KB Output is correct
5 Correct 24 ms 532 KB Output is correct
6 Correct 19 ms 336 KB Output is correct
7 Correct 5 ms 336 KB Output is correct
8 Correct 5 ms 336 KB Output is correct
9 Correct 7 ms 336 KB Output is correct
10 Correct 5 ms 336 KB Output is correct
11 Correct 6 ms 336 KB Output is correct
12 Correct 5 ms 336 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 20 ms 336 KB Output is correct
2 Correct 19 ms 336 KB Output is correct
3 Correct 19 ms 336 KB Output is correct
4 Correct 19 ms 336 KB Output is correct
5 Correct 24 ms 532 KB Output is correct
6 Correct 19 ms 336 KB Output is correct
7 Incorrect 24 ms 4952 KB Output isn't correct
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 27 ms 4952 KB Output is correct
2 Correct 29 ms 4944 KB Output is correct
3 Correct 31 ms 5140 KB Output is correct
4 Correct 29 ms 4936 KB Output is correct
5 Correct 28 ms 4944 KB Output is correct
6 Correct 27 ms 5128 KB Output is correct
7 Incorrect 30 ms 5456 KB Output isn't correct
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 20 ms 336 KB Output is correct
3 Correct 19 ms 336 KB Output is correct
4 Correct 19 ms 336 KB Output is correct
5 Correct 19 ms 336 KB Output is correct
6 Correct 24 ms 532 KB Output is correct
7 Correct 19 ms 336 KB Output is correct
8 Incorrect 24 ms 4952 KB Output isn't correct
9 Halted 0 ms 0 KB -