# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
680534 | 2023-01-11T05:47:10 Z | ReLice | Biochips (IZhO12_biochips) | C++14 | 304 ms | 403276 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
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 3 ms | 4948 KB | Output is correct |
2 | Correct | 4 ms | 4948 KB | Output is correct |
3 | Correct | 4 ms | 5204 KB | Output is correct |
4 | Correct | 14 ms | 22840 KB | Output is correct |
5 | Correct | 18 ms | 25076 KB | Output is correct |
6 | Correct | 15 ms | 25008 KB | Output is correct |
7 | Correct | 216 ms | 300868 KB | Output is correct |
8 | Correct | 200 ms | 300868 KB | Output is correct |
9 | Correct | 284 ms | 365336 KB | Output is correct |
10 | Correct | 304 ms | 403276 KB | Output is correct |