Submission #1259692

#TimeUsernameProblemLanguageResultExecution timeMemory
1259692vietbachleonkroos2326Nile (IOI24_nile)C++20
17 / 100
2095 ms5052 KiB
#include<bits/stdc++.h> #define TIME (1.0* clock()/CLOCKS_PER_SEC) #define pb push_back #define eb emplace_back #define id1 (id<<1) #define id2 (id<<1)|1 #define ll long long #define ii pair<int,int> #define vi vector<int> #define vii vector<pair<int,int>> #define vl vector<long long> #define vll vector <pair<ll,ll>> #define li pair<long long,int> #define vil vector <pair<int,ll>> #define db double #define ff first #define ss second #define lb lower_bound #define ub upper_bound #define FOR(i, a, b) for (int i = (a); i <=(b); i++) #define F0R(i, a) FOR(i, 0, a-1) #define ROF(i, a, b) for (int i = (b); i >= (a); i--) #define R0F(i, a) ROF(i, 0, a-1) #define rep(a) F0R(_, a) #define each(a, x) for (auto &a : x) #define ALL(x) (x).begin(),(x).end() #define pq priority_queue <li, vector <li>, greater <li>> using namespace std; struct DSU { vector<int> p; DSU(int n) : p(n) { iota(p.begin(), p.end(), 0); } int find(int x) { return x == p[x] ? x : p[x] = find(p[x]); } void unite(int a, int b) { p[find(b)] = find(a); } }; vector<ll> calculate_costs(vector<int> W, vector<int> A, vector<int> B, vector<int> E) { int n = W.size(), q = E.size(); vector<ll> res(q); vector<int> idx(n); iota(idx.begin(), idx.end(), 0); sort(idx.begin(), idx.end(), [&](int i, int j) { return W[i] < W[j]; }); for (int qi = 0; qi < q; qi++) { int D = E[qi]; DSU dsu(n); ll cost = 0; vector<bool> used(n); for (int i = 0; i < n; i++) { if (used[idx[i]]) continue; used[idx[i]] = true; cost += A[idx[i]]; for (int j = i+1; j < n && W[idx[j]] - W[idx[i]] <= D; j++) { if (!used[idx[j]] && dsu.find(idx[i]) != dsu.find(idx[j])) { used[idx[j]] = true; cost += B[idx[i]] + B[idx[j]] - A[idx[i]]; dsu.unite(idx[i], idx[j]); break; } } } res[qi] = cost; } return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...