# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
673550 | 2022-12-21T03:55:45 Z | Cutebol | 바이오칩 (IZhO12_biochips) | C++17 | 286 ms | 404000 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[N] , 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[i] >> a[i] ; if (!p[i]) s = i ; else g[p[i]].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 | Incorrect | 2 ms | 4948 KB | Output isn't correct |
3 | Correct | 3 ms | 5204 KB | Output is correct |
4 | Correct | 12 ms | 22796 KB | Output is correct |
5 | Correct | 13 ms | 25044 KB | Output is correct |
6 | Correct | 16 ms | 25044 KB | Output is correct |
7 | Correct | 198 ms | 301536 KB | Output is correct |
8 | Correct | 192 ms | 301444 KB | Output is correct |
9 | Correct | 235 ms | 365976 KB | Output is correct |
10 | Correct | 286 ms | 404000 KB | Output is correct |