제출 #660738

#제출 시각아이디문제언어결과실행 시간메모리
660738mychecksedad메기 농장 (IOI22_fish)C++17
3 / 100
91 ms13924 KiB
#include <bits/stdc++.h> using namespace std; typedef long long int ll; #define pb push_back const int S = 1e5; ll dp[S][2]; long long max_weights(int N, int M, std::vector<int> x, std::vector<int> y, std::vector<int> w){ bool case1 = 1, case2 = 1, case3 = 1; for(int i = 0; i < M; ++i){ if(x[i] % 2) case1 = 0; if(x[i] > 1) case2 = 0; if(y[i] != 0) case3 = 0; } if(case1){ ll ans = 0; for(int i = 0; i < M; ++i) ans += w[i]; return ans; } if(case2){ ll ans1 = 0, ans2 = 0; vector<int> a; vector<int> b; for(int i = 0; i < M; ++i) if(x[i] == 0) ans1 += w[i]; else ans2 += w[i]; return max(ans1, ans2); } if(case3){ for(int i = 0; i <= N; ++i){ dp[i][0] = dp[i][1] = 0; } vector<int> v(N+5); for(int i = 0; i < M; ++i) v[x[i]] = w[i]; for(int i = 1; i <= N; ++i){ dp[i][0] = max(dp[i - 1][0], dp[i - 1][1]); if(i>2){ dp[i][1] += v[i + 1]; dp[i][1] += max(dp[i - 2][0] + v[i - 1], dp[i - 2][1]); }else{ dp[i][1] += v[i - 1]; dp[i][1] += v[i + 1]; } } return max(dp[N][0], dp[N][1]); } return -1; }
#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...