Submission #1071858

#TimeUsernameProblemLanguageResultExecution timeMemory
1071858AbitoTricks of the Trade (CEOI23_trade)C++17
45 / 100
2340 ms527024 KiB
#include <bits/stdc++.h> #define F first #define S second #define pb push_back #define ppb pop_back #define ep insert #define endl '\n' #define elif else if #define pow pwr #define sqrt sqrtt #define int long long #define ll long long typedef unsigned long long ull; using namespace std; const int N=3e5+5,K=205; int dp[N][K],n,k,a[N],b[N]; bool vis[N][K],ans[N],viss[N][K]; int rec(int i,int j){ if (j==k) return 0; if (j>k) return -1e15; if (i>n) return -1e15; if (vis[i][j]) return dp[i][j]; vis[i][j]=1; if (j==0) return dp[i][j]=max(rec(i+1,j),rec(i+1,j+1)+b[i]-a[i]); return dp[i][j]=max(rec(i+1,j)-a[i],rec(i+1,j+1)+b[i]-a[i]); } void getans(){ queue<pair<int,int>> q; q.push({1,0}); viss[1][0]=1; while (!q.empty()){ int i=q.front().F,j=q.front().S; q.pop(); if (j==k) continue; if (j==0){ if (rec(i+1,j)==dp[i][j] && !viss[i+1][j]){ q.push({i+1,j}); viss[i+1][j]=1; } if (rec(i+1,j+1)+b[i]-a[i]==dp[i][j]){ ans[i]=1; if (!viss[i+1][j+1]){ q.push({i+1,j+1}); viss[i+1][j+1]=1; } } } else{ if (rec(i+1,j)-a[i]==dp[i][j] && !viss[i+1][j]){ q.push({i+1,j}); viss[i+1][j]=1; } if (rec(i+1,j+1)+b[i]-a[i]==dp[i][j]){ ans[i]=1; if (!viss[i+1][j+1]){ q.push({i+1,j+1}); viss[i+1][j+1]=1; } } } } return; } int32_t main(){ ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); cin>>n>>k; for (int i=1;i<=n;i++) cin>>a[i]; for (int i=1;i<=n;i++) cin>>b[i]; cout<<rec(1,0)<<endl; getans(); for (int i=1;i<=n;i++) cout<<ans[i];cout<<endl; return 0; }

Compilation message (stderr)

trade.cpp: In function 'int32_t main()':
trade.cpp:71:2: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   71 |  for (int i=1;i<=n;i++) cout<<ans[i];cout<<endl;
      |  ^~~
trade.cpp:71:38: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   71 |  for (int i=1;i<=n;i++) cout<<ans[i];cout<<endl;
      |                                      ^~~~
#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...