# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
643621 | 2022-09-22T16:20:05 Z | Dextar | 메기 농장 (IOI22_fish) | C++17 | 0 ms | 0 KB |
#include <cstdio> #ifdef DEBUG #define D(X) X #else #define D(X) #endif #include <bits/stdc++.h> #define F first #define S second #define ll long long #define pi 3.14159265359 #define pub push_back #define pob pop_back using namespace std; const int INF = 1000 * 1000 * 1000; const int mod = 1000 * 1000 * 1000 + 7; int64_t max_weights(int n, int m, int x[], int y[], int w[]) { ll cnt[n]; for(int i=0; i<n; i++) { cnt[i] = 0; } for(int i=0; i<m; i++) { cnt[x[i]] += w[i]; //cout<<cnt[x[i]]<<endl; } ll dp[n+1]; dp[n-1] = dp[n] = 0; for(int i=n-2; i>=0; i--) { dp[i] = dp[i+2] + cnt[i]; //cout<<dp[i]<<endl; for(int j=i+2; j<=n; j++) { if(j>=n-1) { dp[i] = max(dp[i], cnt[j-1]); } else { dp[i] = max(dp[i], cnt[j-1] + dp[j+1]); } } } return dp[0]; } struct testCase { void solve() { } }; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); D(freopen("input.txt","r",stdin);) //D(freopen("ouput.txt","w",stdout);) int t = 1; //cin >> t; loop: while(t--) { //testCase test; //test.solve(); int n, m; cin >> n >> m; int x[m], y[m], w[m]; for(int i=0; i<m; i++) { cin >> x[i] >> y[i] >> w[i]; } int64_t res = max_weights(n, m, x, y, w); cout << res; } return 0; } /* 7 2 */