| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1325246 | eri16 | 메기 농장 (IOI22_fish) | C++20 | 49 ms | 8016 KiB |
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll max_weights(int N, int M, vector<int> X, vector<int> Y, vector<int> W){
bool evn=true;
bool lwr=true;
ll sm1=0;
ll sm2=0;
int sub_2[N][2];
for (int i=0; i<N; i++){
for (int j=0; j<2; j++){
sub_2[i][j]=0;
}
}
for (int i=0; i<M; i++){
if (X[i]%2){evn=false;sm1+=W[i];sub_2[Y[i]][X[i]%2]=W[i];}
else{sm2+=W[i];sub_2[Y[i]][X[i]%2]=W[i];}
if (X[i]>1){lwr=false;}
}
if (evn){return (sm1+sm2);}
if (lwr && N==2){return max(sm1,sm2);}
if (lwr){
vector<ll> A(N+1,0), B(N+1,0);
for (int i=0; i<N; i++){
A[i+1]=A[i]+sub_2[i][0];
B[i+1]=B[i]+sub_2[i][1];
}
ll ans=0;
for (int i=0; i<=N; i++) {
ans=max(ans, B[N]-B[i]+A[i]);
}
return ans;
}
vector <int> w(N,0);
for (int i=0; i<M; i++){w[X[i]]=W[i];}
ll dp[N][2];
dp[0][0]=0;
dp[0][1]=0;
dp[1][0]=w[1];
dp[1][1]=w[0];
for (int i=2; i<N; i++){
dp[i][0]=max(dp[i-1][0],dp[i-1][1]+w[i]);
dp[i][1]=max({dp[i-1][0],dp[i-1][1],dp[i-2][0]+w[i-1]});
}
return max(dp[N-1][0],dp[N-1][1]);
}| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
