This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "fish.h"
#include <bits/stdc++.h>
//#include "grader.cpp"
using namespace std;
#define ll long long
#define sc second
#define fr first
#define pb push_back
long long max_weights(int n, int m, vector<int> x, vector<int> y, vector<int> w){
bool sb1=1,sb2=1,sb3=1;
for(int i=0;i<m;i++){
sb1&=(x[i]%2==0);
sb2&=(x[i]<=1);
sb3&=(y[i]==0);
}
if(sb1){
ll sum=0;
for(int i=0;i<m;i++) sum+=w[i];
return sum;
}
if(sb2){
vector<ll> a(n),b(n);
ll A=0,B=0;
for(int i=0;i<m;i++){
if(x[i]==0){
A+=w[i];
a[y[i]]=w[i];
}
else{
B+=w[i];
b[y[i]]=w[i];
}
}
if(n==2) return max(A,B);
ll x=0,y=B;
for(int i=0;i<n;i++){
x+=a[i];
y-=b[i];
B=max(B,x+y);
}
return B;
}
if(sb3){
vector<ll> a(n);
for(int i=0;i<m;i++)
a[x[i]]=w[i];
vector<ll> dp(n),mx(n);
for(int i=1;i<n;i++){
dp[i]=mx[i-1]+a[i];
mx[i]=max(mx[i-1],dp[i-1]);
if(i>1) mx[i]=max(max(mx[i-2],dp[i-2])+a[i-1],mx[i]);
else mx[i]=max(a[i-1],mx[i]);
}
ll ans=0;
for(int i=0;i<n;i++) ans=max({ans,dp[i],mx[i]});
return ans;
}
}
Compilation message (stderr)
fish.cpp: In function 'long long int max_weights(int, int, std::vector<int>, std::vector<int>, std::vector<int>)':
fish.cpp:59:1: warning: control reaches end of non-void function [-Wreturn-type]
59 | }
| ^
# | 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... |