제출 #1243861

#제출 시각아이디문제언어결과실행 시간메모리
1243861AlperenT_나일강 (IOI24_nile)C++20
67 / 100
2094 ms5360 KiB
#include "nile.h" #include <bits/stdc++.h> #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2") #define pb push_back #define F first #define pii pair<int,int> #define all(a) a.begin(),a.end() #define S second #define sz(a) (int)a.size() #define rep(i , a , b) for(int i = (a) ; i <= (b) ; i++) #define per(i , a , b) for(int i = (a) ; i >= (b) ; i--) #define ld double #define ll long long using namespace std ; const int maxn = 1e6 + 100 , inf = 1e9 , mod = 998244353; ll dp[maxn] ; std::vector<long long> calculate_costs(std::vector<int> W, std::vector<int> A,std::vector<int> B, std::vector<int> E) { int n = sz(W) ; ll sm =0 ; vector <pii> vec; rep(i , 0 ,n-1){ vec.pb({W[i] , A[i]-B[i]}) ; sm += A[i]; } sort(all(vec)); vector <ll> ans ; for(int d : E){ ll mx= 0 ; rep(i ,0 , n-1){ dp[i] = dp[i-1] ; per(j ,i-1, 0){ if(vec[i].F - vec[j].F <= d){ dp[i] = max(dp[i] , dp[j-1] + vec[i].S + vec[j].S) ; } if(j == i-2)break ; } mx= max(mx ,dp[i]); } ans.pb(sm-mx); } 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...