Submission #1029983

#TimeUsernameProblemLanguageResultExecution timeMemory
10299830pt1mus23Džumbus (COCI19_dzumbus)C++14
0 / 110
33 ms20824 KiB
#pragma GCC optimize("O3", "inline") #define skillissue <bits/stdc++.h> #define ultra_mal std #include skillissue using namespace ultra_mal; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); #define ins insert #define pb push_back #define int long long int #define pii pair<int, int> #define endl '\n' #define drop(x) cout<<(x)<<endl; return; #define all(x) x.begin(),x.end() #define hash FhashF const int mod = 1e9 +7, sze = 1E3 +300, inf = LLONG_MAX, P = 1453; // const int L = 30; int val[sze]; vector<int> graph[sze]; int md =0; int r =0; void dfs(int node,int par=-1,int d=0){ if(d>md){ md=d; r=node; } for(auto v:graph[node]){ if(v!=par){ dfs(v,node,d+1); } } } vector<int> arr; void fldfs(int node,int par=-1){ arr.pb(val[node]); for(auto v:graph[node]){ if(v!=par){ fldfs(v,node); } } } int dp[sze][sze][2]; /* dp[i][0][x] = i-ci ni kullanmadan x sumuna gelende max cvb dp[i][1][x] = i-ci ni kullaninca x sumuna gelende max cvb */ int pref[sze]; int mxp[sze]; void cave(){ int n,m; cin>>n>>m; arr.pb(0);// 1 indexed /* 20 +30 : Tree , Chain N<=100 , O(n^4 ) ? O(n^3 * x ) ? x=1 ? */ for(int i=1;i<=n;i++){ cin>>val[i]; } for(int i=0;i<m;i++){ int u,v; cin>>u>>v; graph[u].pb(v); graph[v].pb(u); } dfs(1); // cout<<r<<endl; fldfs(r); // for(auto v:arr){ // cout<<v<<" "; // } // cout<<endl; // cout<<endl; int lim = 1111; for(int j=1;j<=n;j++){ for(int i=0;i<=lim;i++){ dp[j][i][1]=-inf; } } for(int i =2;i<=n;i++){ for(int j=0;j<lim;j++){ dp[i][j][0]=max(dp[i-1][j][0],dp[i-1][j][1]); dp[i][j][1]=-inf; if(arr[i]<=j){ dp[i][j][1]=dp[i-1][j- arr[i-1]][1]+1; } if(arr[i]+arr[i-1]<=j){ dp[i][j][1]=max(dp[i][j][1],dp[i-1][j-arr[i]-arr[i-1]][0]+2); } } } // for(int i=1;i<=10;i++){ // cout<<mxp[i]<<" "; // } // cout<<endl; int q; cin>>q; while(q--){ int s; cin>>s; cout<<max(dp[n-1][s][0],dp[n-1][s][1])<<endl; } } signed main() { cin.tie(0)->sync_with_stdio(0); int tt = 1; // cin>>tt; // freopen(".in", "r", stdin); // freopen(".out", "w", stdout); while(tt--){ cave(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...