# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
673551 | 2022-12-21T03:58:12 Z | Cutebol | 바이오칩 (IZhO12_biochips) | C++17 | 280 ms | 401664 KB |
#include <bits/stdc++.h> using namespace std; void fopn(string name){freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout);} #define Scaramouche ios_base::sync_with_stdio(0) ; cin.tie(0) ; cout.tie(0); //#define int long long #define itn int #define endl "\n" #define ff first #define ss second const int N = 2e5 + 5 ; const int mod = 1e9 + 7 ; const int inf = 1e9 ; int n , m , s , timer = 1 ; int a[N] , p , b[N] , tin[N] ; int dp[N][505] ; vector <int> g[N] ; void dfs( int v ){ int tt = timer ; for ( auto to : g[v] ) dfs(to) ; tin[timer] = tt ; b[timer] = a[v] ; timer ++ ; } void solve(){ cin >> n >> m ; for ( int i = 1 ; i <= n ; i ++ ){ cin >> p >> a[i] ; if (!p) s = i ; else g[p].push_back(i) ; } dfs(s) ; for ( int i = 0 ; i <= n ; i ++ ) { for ( int j = 1 ; j <= m ; j ++ ) { dp[i][j] = -inf ; } } for ( int i = 1 ; i <= n ; i ++ ){ for ( int j = 1 ; j <= m ; j ++ ){ dp[i][j] = max ( dp[i-1][j] , dp[tin[i]-1][j-1] + b[i] ) ; } } cout << dp[n][m] ; } signed main(){ // fopn("blocks") ; Scaramouche ; int t = 1 ; // cin >> t ; while ( t -- ) solve() ; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 4948 KB | Output is correct |
2 | Correct | 2 ms | 4948 KB | Output is correct |
3 | Correct | 2 ms | 5164 KB | Output is correct |
4 | Correct | 12 ms | 22740 KB | Output is correct |
5 | Correct | 14 ms | 24936 KB | Output is correct |
6 | Correct | 15 ms | 25012 KB | Output is correct |
7 | Correct | 187 ms | 299316 KB | Output is correct |
8 | Correct | 191 ms | 299340 KB | Output is correct |
9 | Correct | 234 ms | 364080 KB | Output is correct |
10 | Correct | 280 ms | 401664 KB | Output is correct |