Submission #1259687

#TimeUsernameProblemLanguageResultExecution timeMemory
1259687vietbachleonkroos2326Nile (IOI24_nile)C++20
0 / 100
2096 ms3144 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; vector<long long> calculate_costs(vector<int> W, vector<int> A, vector<int> B, vector<int> E) { int n = W.size(); int q = E.size(); vector<long long> res; for (int D : E) { vector<int> id(n); for (int i = 0; i < n; i++) id[i] = i; sort(id.begin(), id.end(), [&](int i, int j) { return W[i] < W[j]; }); vector<bool> paired(n, false); long long sum = 0; for (int i = 0; i < n; i++) { if (paired[id[i]]) continue; int best_j = -1; int maxsav = -1; for (int j = i + 1; j < n && W[id[j]] - W[id[i]] <= D; j++) { if (!paired[id[j]]) { int sav = (A[id[i]] - B[id[i]]) + (A[id[j]] - B[id[j]]); if (sav > maxsav) { maxsav = sav; best_j = j; } } } if (best_j != -1) { sum += B[id[i]] + B[id[best_j]]; paired[id[i]] = paired[id[best_j]] = true; } else { sum += A[id[i]]; paired[id[i]] = true; } } res.push_back(sum); } 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...