Submission #1290059

#TimeUsernameProblemLanguageResultExecution timeMemory
1290059vpinxNile (IOI24_nile)C++20
Compilation error
0 ms0 KiB
#include "nile.h"
#include <bits/stdc++.h>
using namespace std;

vector<long long> calculate_costs(vector<int> w, vector<int> a, vector<int> b, vector<int> e) {
    long long n = w.size(), mx = 0;
    vector<pair<int, int>> v(n);
    for (int i = 0; i < n; i++) {
        v[i] = {w[i], a[i] - b[i]};
        mx += a[i];
    }
    sort(v.begin(), v.end());
    
    auto op = [&](vector<pair<int, int>> &c, int sm) -> long long {
        long long sum = 0;
        for (int i = 0; i < c.size(); i++) sum += c[i].second;
        if ((int)c.size() % 2 == 0) return sum;
        
        long long ans = 0;
        for (int i = 0; i < c.size(); i++) {
            if (i & 1) {
                if (i < c.size() - 1 and c[i + 1].first - c[i - 1].first <= sm) ans = max(ans, sum - c[i].second);
            }else ans = max(ans, sum - c[i].second);
        return ans;
    };
    
    int q = e.size();
    vector<long long> ans(q);
    for (int t = 0; t < q; t++) {
        long long val = 0;
        vector<pair<int, int>> cur = {v[0]};
        for (int i = 1; i < n; i++) {
            if (v[i].first - v[i - 1].first > e[t]) {
                val += op(cur, e[t]); 
                cur.clear();
            }
            cur.push_back(v[i]);
        }
        ans[t] = mx - val - op(cur, e[t]);
    }
    return ans;
}

Compilation message (stderr)

nile.cpp: In lambda function:
nile.cpp:28:23: error: conflicting declaration 'std::vector<long long int> ans'
   28 |     vector<long long> ans(q);
      |                       ^~~
nile.cpp:19:19: note: previous declaration as 'long long int ans'
   19 |         long long ans = 0;
      |                   ^~~
nile.cpp:34:24: error: use of 'op' before deduction of 'auto'
   34 |                 val += op(cur, e[t]);
      |                        ^~
nile.cpp:39:12: error: invalid types 'long long int[int]' for array subscript
   39 |         ans[t] = mx - val - op(cur, e[t]);
      |            ^
nile.cpp:39:29: error: use of 'op' before deduction of 'auto'
   39 |         ans[t] = mx - val - op(cur, e[t]);
      |                             ^~
nile.cpp: In function 'std::vector<long long int> calculate_costs(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
nile.cpp:42:2: error: expected ',' or ';' at end of input
   42 | }
      |  ^
nile.cpp:42:2: error: expected '}' at end of input
nile.cpp:5:95: note: to match this '{'
    5 | vector<long long> calculate_costs(vector<int> w, vector<int> a, vector<int> b, vector<int> e) {
      |                                                                                               ^
nile.cpp:42:2: warning: no return statement in function returning non-void [-Wreturn-type]
   42 | }
      |  ^