제출 #1245745

#제출 시각아이디문제언어결과실행 시간메모리
1245745YassirSalama나일강 (IOI24_nile)C++20
67 / 100
2092 ms11440 KiB
#include "nile.h" #include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define all(v) v.begin(),v.end() const int maxn = 1e5+100; int par[maxn]; vector<int> a,b,w; void init(){ for(int i = 0;i<maxn;i++){ par[i] = i; } } int find(int node){ return node==par[node]?node:par[node] = find(par[node]); } void merge(int a,int b){ a = find(a); b = find(b); if(a==b) return; par[b] = a; } vector<ll> calculate_costs(vector<int> W, vector<int> A,vector<int> B, vector<int> E) { a = A; b = B; w = W; vector<vector<ll>> v; int n = w.size(); for(int i = 0;i<n;i++){ v.pb({(ll)w[i],(ll)a[i],(ll)b[i]}); } vector<ll> ans; sort(all(v)); for(auto d : E){ init(); ll dp[n];memset(dp,0,sizeof(dp)); for(int i =1;i<n;i++){ dp[i] = 1e18; } dp[0] = v[0][1]; for(int i=1;i<n;i++){ dp[i] = min(dp[i],dp[i-1]+v[i][1]); if(abs(v[i-1][0]-v[i][0])<=d){ dp[i] = min(dp[i],(i>=2?dp[i-2]:0LL)+(ll)v[i-1][2]+(ll)v[i][2]); } if(i>=2&&abs(v[i-2][0]-v[i][0])<=d){ dp[i] = min(dp[i],(i>=3?dp[i-3]:0LL)+(ll)v[i-2][2]+(ll)v[i][2]+(ll)v[i-1][1]); } } ans.pb(dp[n-1]); } return ans; }
#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...