Submission #627088

#TimeUsernameProblemLanguageResultExecution timeMemory
627088Huseyn123Catfish Farm (IOI22_fish)C++17
3 / 100
494 ms69200 KiB
#include "fish.h" #include <bits/stdc++.h> #define MAX 300001 using namespace std; typedef long long ll; typedef pair<ll,ll> pll; set<pll> a[MAX]; set<ll> b[MAX]; ll n,m,k; long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y, std::vector<int> W){ n=N; m=M; for(int i=0;i<m;i++){ a[X[i]].insert(make_pair(n-Y[i]-1,W[i])); b[X[i]].insert(n-Y[i]-1); } ll dp[n+1]; dp[0]=0; dp[1]=0; ll h=n,sum=0; if(b[0].size()!=0){ h=*b[0].begin(); for(auto x:a[0]){ sum+=x.second; } dp[1]=sum; } for(int i=2;i<=n;i++){ dp[i]=dp[i-1]; if(b[i-1].size()!=0){ ll j; sum=0; j=distance(b[i-1].begin(),b[i-1].lower_bound(h-1)); if(j==0){ h=n; } else{ h=*b[i-1].begin(); } auto it=a[i-1].begin(); ll z=0; while(it!=a[i-1].end() && z<j){ dp[i]+=(*it).second; ++it; z++; } sum=0; for(auto x:a[i-1]){ sum+=x.second; } if(sum+dp[i-2]>dp[i]){ dp[i]=sum+dp[i-2]; h=*b[i-1].begin(); } } else{ h=n; } } return dp[n]; } /* int main(){ ll 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]; } ll res=max_weights(N,M,X,Y,W); cout << res << "\n"; } */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...