Submission #1367447

#TimeUsernameProblemLanguageResultExecution timeMemory
1367447coderg300711Catfish Farm (IOI22_fish)C++20
12 / 100
35 ms7260 KiB
#include "bits/stdc++.h"
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pii pair<int,int>
#define yes cout<<"YES\n"
#define no cout<<"NO\n"
#define pb push_back
#define sz(x) (int)(x).size()
#define rsz resize
#define ass assign
#define F(i,l,r) for(int i=(l);i<(r);++i)
typedef long long ll;
typedef unsigned long long ull;
typedef long double lld;
template<typename T> using pqg = priority_queue<T, vector<T>, greater<T>>;
#define each(a,x) for(auto a:x)
#define FOR(i,a) for(int i=0;i<(a);i++)
#define ROF(i,a,b) for(int i=(b)-1;i>=(a);i--)
#define eb emplace_back
#define ft front()
#define V vector

#include "fish.h"

ll max_weights(int n,int m,V<int> x,V<int> y,V<int> w){
bool even=1;
FOR(i,m){
  if(x[i]&1){
    even=0;
    break;
  }
}
if(even){
  ll tot=0;
  each(v,w)tot+=(ll)v;
  return tot;
}
bool sub2=1;
FOR(i,m){
  if(x[i]>1){
    sub2=0;
    break;
  }
}
if(sub2){
  V<ll> sumcol0(n+1,0),sumcol1(n+1,0);
  FOR(i,m){
    if(!x[i])sumcol0[y[i]+1]+=w[i];
    else sumcol1[y[i]+1]+=w[i];
  }
  F(h,1,n+1){
    sumcol0[h]+=sumcol0[h-1];
    sumcol1[h]+=sumcol1[h-1];
  }
  ll mx=0;
  FOR(h,n+1){
    mx=max(mx,sumcol0[h]+(sumcol1[n]-sumcol1[h]));
    mx=max(mx,sumcol1[n]);
  }
  return mx;
}
bool sub3=1;
FOR(i,m){
  if(y[i]!=0){
    sub3=0;
    break;
  }
}
if(sub3){
  V<ll> at(n,0);
  FOR(i,m)at[x[i]]=w[i];
  const ll inf=1e18;
  V<V<ll>> dp(2,V<ll>(2,-inf));
  dp[0][0]=0;
  FOR(i,n){
    V<V<ll>> ndp(2,V<ll>(2,-inf));
    FOR(prev,2){
      FOR(cur,2){
        if(dp[cur][prev]<-inf/2)continue;
        FOR(nxt,2){
          ll score=dp[cur][prev];
          if(!cur && (prev==1 || nxt==1))score+=at[i];
          ndp[nxt][cur]=max(score,ndp[nxt][cur]);
        }
      }
    }
    dp=ndp;
  }
  return max(dp[0][0],dp[0][1]);
}
return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...