Submission #898871

#TimeUsernameProblemLanguageResultExecution timeMemory
898871vjudge1Magic Tree (CEOI19_magictree)C++17
3 / 100
29 ms9680 KiB
//In His Name #include <bits/stdc++.h> //#pragma GCC optimization("O3") //#pragma GCC optimize("unroll-loops") //#pragma GCC target("avx2") using namespace std; #define ll long long #define int ll typedef pair<int, int> pii; #define F first #define S second #define pb push_back #define bug(x) cout << "Ah shit , here we go again : " << x <<endl #define all(x) x.begin() , x.end() const int maxn = 1e5 + 10, MOD = 1e9 + 7 ; const ll INF = 1e18 + 100; int n , m , k , v[maxn] ,d[maxn] , w[maxn] , dd[maxn]; vector<int> adj[maxn] , nums; bool cmp(int x , int y){ return (v[x] > v[y]); } void Lis(){ int N = nums.size(); vector<int> ans; ans.push_back(nums[0]); for (int i = 1; i < N ; i++) { if (nums[i] > ans.back()) ans.push_back(nums[i]); else { int low = lower_bound(ans.begin(), ans.end(),nums[i])- ans.begin(); ans[low] = nums[i]; } } cout << ans.size(); } int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(0) , cout.tie(0); cin >> n >> m >> k; bool ok = true; for(int i = 2 ; i <= n ; i++){ int p; cin >> p; adj[p].pb(i); if(p != i-1) ok = false; } int cnt = 0; vector<int> x; for(int i = 1 ; i <= m ; i++){ cin >> v[i] >> d[i] >> w[i]; dd[v[i]] = d[i]; x.pb(i); cnt += w[i]; } for(int i = n ; i > 1 ; i--) if(dd[i] != 0) nums.pb(dd[i]); if(ok) return Lis() , 0; cout << cnt; }
#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...