| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 642201 | tigar | 메기 농장 (IOI22_fish) | C++17 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll max_weights(int N, int M, int* X, int* Y, int* W)
{
bool subtask1=true, subtask2=true, subtask3=true;
for(int i=0; i<M; i++)
{
if(X[i]%2!=0)subtask1=false;
if(X[i]>1)subtask2=false;
if(Y[i]!=0)subtask3=false;
}
if(subtask1)
{
ll rez=0;
for(int i=0; i<M; i++)rez+=W[i];
return rez;
}
if(subtask2)
{
ll s1=0, s0=0, m[N][2];
for(int i=0; i<M; i++)
{
if(X[i]==0)s0+=W[i];
else s1+=W[i];
m[Y[i]][X[i]]=W[i];
}
for(int i=0; i<N; i++)
{
m[i][0]=m[max(i-1, 0)][0]+m[i][0];
m[i][1]=m[max(i-1, 0)][1]+m[i][1];
}
if(N==2)return max(m[N-1][0], m[N-1][1]);
ll rez=0;
for(int i=0; i<N; i++)
{
rez=max(rez, m[i][0]+m[N-1][1]-m[i][0]);
}
return rez;
}
}
