Submission #1176812

#TimeUsernameProblemLanguageResultExecution timeMemory
1176812Kaztaev_AlisherNile (IOI24_nile)C++20
0 / 100
32 ms9032 KiB
#include <bits/stdc++.h> #define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define file(s) if (fopen(s".in", "r")) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout) #define all(a) a.begin() , a.end() #define F first #define S second using namespace std; using ll = long long; const ll N = 2e5+5 , inf = 2e9 + 7; const ll INF = 1e18 , mod = 1e9+7; ll w1[N] , a1[N] , b1[N]; ll w[N] , a[N] , b[N] , ord[N] , d[N] , c[N] , n , q; vector<long long> solve(){ vector<ll> vec; for(int _ = 1; _ <= q; _++){ ll sum = 0; for(int i = 1; i <= n; i++){ a1[i] = a[i]; b1[i] = b[i]; w1[i] = w[i]; } for(int i = 1; i <= n; i++){ sum += b[i]; ord[i] = i; } sort(ord+1,ord+1+n,[&](int i , int j){ return w[i] < w[j]; }); for(int i = 1; i <= n; i++){ a[i] = a1[ord[i]]; b[i] = b1[ord[i]]; w[i] = w1[ord[i]]; c[i] = a[i]-b[i]; } for(int l = 1; l <= n; l++){ ll k = l , mn = INF; while(k+1 <= n && abs(w[k]-w[k+1]) <= d[_]) k++; for(int j = l; j <= k; j++){ if(j % 2 != l % 2){ if(j+1 <= n && j-1 >= 1 && abs(w[j-1]-w[j+1]) <= d[_]){ mn = min(mn , c[j]); } } else { mn = min(mn , c[j]); } } l = k; sum += mn; } vec.push_back(sum); } return vec; } vector<long long> calculate_costs(vector<int> W, vector<int> A, vector<int> B, vector<int> E){ n = W.size(); for(int i = 1; i <= n; i++){ w[i] = W[i-1]; a[i] = A[i-1]; b[i] = B[i-1]; } q = E.size(); for(int i = 1; i <= q; i++){ d[i] = E[i-1]; } return solve(); } // int main() { // int N; // assert(1 == scanf("%d", &N)); // std::vector<int> W(N), A(N), B(N); // for (int i = 0; i < N; i++) // assert(3 == scanf("%d%d%d", &W[i], &A[i], &B[i])); // int Q; // assert(1 == scanf("%d", &Q)); // std::vector<int> E(Q); // for (int j = 0; j < Q; j++) // assert(1 == scanf("%d", &E[j])); // fclose(stdin); // // std::vector<long long> R = calculate_costs(W, A, B, E); // // int S = (int)R.size(); // for (int j = 0; j < S; j++) // printf("%lld\n", R[j]); // fclose(stdout); // // return 0; // }
#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...