# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
850834 | AliHasanli | Catfish Farm (IOI22_fish) | C++17 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <iostream>
#include <vector>
#include<map>
using namespace std;
map<int,int>mX,mY;
long long max_weights(int N, int M, vector<int> X, vector<int> Y, vector<int> W)
{
for(int i=0;i<X.size();i++)
{
mX[X[i]]=1;
mY[Y[i]]=1;
}
if(N==1)
return 0;
bool check=true;
int maxX=0;
for(int i:X)
maxX=max(maxX,i);
for(int i:X)
if(i%2)
{
check=false;
break;
}
long long ans=0;
if(check)
{
for(int i=0;i<W.size();i++)
ans+=W[i];
return ans;
}
if(maxX==0)
{
for(int i=0;i<W.size();i++)
ans+=W[i];
return ans;
}
if(maxX==1)
{
long long ansX0=0,ansX1=0,ans=0;
for(int i=0;i<X.size();i++)
if(X[i]==1)
ansX1+=W[i];
ans=ansX1;
for(int i=0;i<N;i++)
{
if(mY[i]==1 && mX[1]==1)
ansX1-=W[i];
if(mY[i]==1 && mX[0]==1)
ansX0+=W[i];
ans=max(ans,ansX0+ansX1);
}
return ans;
}
return 0;
}
int main() {
int N, M;
cin>>N>>M;
vector<int> X(M), Y(M), W(M);
for (int i = 0; i < M; ++i)
cin>>X[i]>>Y[i]>>W[i];
long long result = max_weights(N, M, X, Y, W);
cout<<result;
return 0;
}