Submission #1244643

#TimeUsernameProblemLanguageResultExecution timeMemory
1244643allin27x나일강 (IOI24_nile)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; #define int long long struct obj { int a, b, w; }; struct rg { int l , r, sum, mn0, mn1, ans; }; struct link { int df; int idx; //with idx+1 }; bool comp1(obj &a, obj &b) { return a.w < b.w; } bool comp2(link &a, link &b) { return a.df < b.df; } int res = 0; const int N = 1e5+5; const int INF = 1e18; rg Z[N]; set<int> lfs,rgs; void join(int i) { rg R; R.l = Z[i].l; R.r = Z[i+1].r; R.sum = Z[i].sum + Z[i+1].sum; res -= Z[i].ans; res -= Z[i+1].ans; if ((Z[i].r - Z[i].l + 1)&1) swap(Z[i+1].mn0, Z[i+1].mn1); R.mn0 = min(Z[i].mn0, Z[i+1].mn0); R.mn1 = min(Z[i].mn1, Z[i+1].mn1); if ((R.r - R.l)&1) R.ans = R.sum; else R.ans = R.sum + R.mn0; res += R.ans; rgs.erase(i); lfs.erase(i+1); Z[R.l] = R; Z[R.r] = R; } void upd(int i, int nv) { int r = *rgs.lower_bound(i); rg R = Z[r]; res -= R.ans; R.mn0 = min(R.mn0, nv); R.mn1 = min(R.mn1, nv); if ((R.r - R.l)&1) R.ans = R.sum; else R.ans = R.sum + R.mn0; res += R.ans; Z[R.l] = R; Z[R.r] = R; } vector<long long> calculate_costs(vector<signed> W, vector<signed> A, vector<signed> B, vector<signed> E) { int n = W.size(); vector<obj> p; for (int i=0; i<n; i++) p.push_back({A[i], B[i], W[i]}); sort(p.begin(), p.end(), comp1); vector<link> evs; for (int i=0; i<n-1; i++) { evs.push_back({p[i+1].w-p[i].w, i}); } sort(evs.begin(), evs.end(), comp2); vector<pair<int,int>> qs; vector<int> ans((int)E.size()); for (int i=0; i<E.size(); i++) qs.push_back({E[i], i}); sort(qs.begin(), qs.end()); for (int i=0; i<n; i++) { lfs.insert(i); rgs.insert(i); Z[i].l = i; Z[i].r = i; Z[i].sum = p[i].b; Z[i].mn0 = p[i].a-p[i].b; Z[i].ans = p[i].a; Z[i].mn1 = INF; res += p[i].a; } vector<link> ps2; for (int i=1; i<n-1; i++) { ps2.push_back({p[i+1].w - p[i-1].w, i}); } sort(ps2.begin(), ps2.end(), comp2); int j=0; int t = 0; for (auto [d, idx]: qs) { while (j<evs.size() && evs[j].df <= d) { join(evs[j].idx); j++; } while (t<ps2.size() && ps2[t].df <= d) { int i = ps2[t].idx; upd(i, p[i].a - p[i].b); t++; } ans[idx] = res; } return ans; }

Compilation message (stderr)

nile.cpp:21:18: error: 'a' was not declared in this scope
   21 | bool comp2(link &a, link &b) {
      |                  ^
nile.cpp:21:27: error: 'b' was not declared in this scope
   21 | bool comp2(link &a, link &b) {
      |                           ^
nile.cpp:21:28: error: expression list treated as compound expression in initializer [-fpermissive]
   21 | bool comp2(link &a, link &b) {
      |                            ^
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:55:20: error: type/value mismatch at argument 1 in template parameter list for 'template<class _Tp, class _Alloc> class std::vector'
   55 |         vector<link> evs;
      |                    ^
nile.cpp:55:20: note:   expected a type, got 'link'
nile.cpp:55:20: error: template argument 2 is invalid
nile.cpp:57:21: error: request for member 'push_back' in 'evs', which is of non-class type 'int'
   57 |                 evs.push_back({p[i+1].w-p[i].w, i});
      |                     ^~~~~~~~~
nile.cpp:59:18: error: request for member 'begin' in 'evs', which is of non-class type 'int'
   59 |         sort(evs.begin(), evs.end(), comp2);
      |                  ^~~~~
nile.cpp:59:31: error: request for member 'end' in 'evs', which is of non-class type 'int'
   59 |         sort(evs.begin(), evs.end(), comp2);
      |                               ^~~
nile.cpp:70:20: error: type/value mismatch at argument 1 in template parameter list for 'template<class _Tp, class _Alloc> class std::vector'
   70 |         vector<link> ps2;
      |                    ^
nile.cpp:70:20: note:   expected a type, got 'link'
nile.cpp:70:20: error: template argument 2 is invalid
nile.cpp:72:21: error: request for member 'push_back' in 'ps2', which is of non-class type 'int'
   72 |                 ps2.push_back({p[i+1].w - p[i-1].w, i});
      |                     ^~~~~~~~~
nile.cpp:74:18: error: request for member 'begin' in 'ps2', which is of non-class type 'int'
   74 |         sort(ps2.begin(), ps2.end(), comp2);
      |                  ^~~~~
nile.cpp:74:31: error: request for member 'end' in 'ps2', which is of non-class type 'int'
   74 |         sort(ps2.begin(), ps2.end(), comp2);
      |                               ^~~
nile.cpp:77:30: error: request for member 'size' in 'evs', which is of non-class type 'int'
   77 |                 while (j<evs.size() && evs[j].df <= d) {
      |                              ^~~~
nile.cpp:77:43: error: invalid types 'int[long long int]' for array subscript
   77 |                 while (j<evs.size() && evs[j].df <= d) {
      |                                           ^
nile.cpp:78:33: error: invalid types 'int[long long int]' for array subscript
   78 |                         join(evs[j].idx); j++;
      |                                 ^
nile.cpp:80:30: error: request for member 'size' in 'ps2', which is of non-class type 'int'
   80 |                 while (t<ps2.size() && ps2[t].df <= d) {
      |                              ^~~~
nile.cpp:80:43: error: invalid types 'int[long long int]' for array subscript
   80 |                 while (t<ps2.size() && ps2[t].df <= d) {
      |                                           ^
nile.cpp:81:36: error: invalid types 'int[long long int]' for array subscript
   81 |                         int i = ps2[t].idx;
      |                                    ^