제출 #791534

#제출 시각아이디문제언어결과실행 시간메모리
791534NguyenKhangFeast (NOI19_feast)C++17
51 / 100
1062 ms8016 KiB
//#pragma GCC optimize("Ofast,unroll-loops") //#pragma GCC target("bmi,bmi2,lzcnt,popcnt") //#pragma GCC target("avx2,popcnt,lzcnt,abm,bmi,bmi2,fma,tune=native") //#pragma expected_value //#pragma isolated_call //#pragma disjoint #include<bits/stdc++.h> //#include <ext/pb_ds/assoc_container.hpp> //using namespace __gnu_pbds; using namespace std; #define int long long //#define double long double #define Fi first #define Se second #define Rep(i,a,b) for (int i=a;i<=b;++i) #define Repu(i,b,a) for (int i=b;i>=a;--i) #define pb push_back #define ms(a,i) memset(a,i,sizeof(a)) #define sz size() #define mp make_pair #define endl '\n' #define sef setprecision(6)<<fixed #define cer cout<<"cak"<<endl; typedef pair<int,int> ii; typedef vector<int> vi; typedef vector<double> va; typedef vector<ii> vii; typedef vector<vi> vvi; typedef vector<va> vva; //const double EPS=1e-9; const double PI=acos(-1); const long long oo=1e18; const int MN=3e5+5; const int mod=1e9+7; using cd=complex<double>; //typedef tree<int,null_type,less<int>,rb_tree_tag, tree_order_statistics_node_update> index_set; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int n,k; int a[MN]; int pre[MN]; int dp_before[MN], dp_now[MN]; void compute(int l,int r,int tl,int dr) { if(l>r) return; int mid = (l+r)/2; ii maxx = {dp_before[mid], mid}; Rep(i,tl,min(dr,mid)) { int temp = pre[mid] - pre[i]; maxx = max(maxx, ii(dp_before[i] + temp,i)); } dp_now[mid] = maxx.Fi; compute(l,mid-1,tl,maxx.Se); compute(mid+1,r,maxx.Se,dr); } signed main() { //freopen(".inp","r",stdin); freopen(".out","w",stdout); ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin>>n>>k; if(n<=2000) { Rep(i,1,n) cin>>a[i]; Rep(i,1,n) pre[i] = pre[i-1] + a[i]; int cek = 0; Rep(step,1,k) { Rep(i,1,n) { dp_now[i] = max(dp_before[i], dp_now[i-1]); Rep(j,0,i-1) dp_now[i] = max(dp_now[i], dp_before[j] + pre[i] - pre[j]); } Rep(i,1,n) dp_before[i] = dp_now[i]; } int ans = 0; cout<<dp_now[n]; return 0; } int cnt = 0; Rep(i,1,n) { cin>>a[i]; if(a[i] < 0) cnt++; } if(cnt == 0) { int sum = 0; Rep(i,1,n) { sum += a[i]; } cout<<sum; return 0; } else { if(k==1) { int ans = 0; Rep(i,1,n) { dp_now[i] = max(dp_now[i-1] + a[i], a[i]); ans = max(ans,dp_now[i]); } cout<<ans; } else { int sum = 0; Rep(i,1,n) { if(a[i]<0) continue; sum += a[i]; } cout<<sum; } } }

컴파일 시 표준 에러 (stderr) 메시지

feast.cpp: In function 'int main()':
feast.cpp:78:7: warning: unused variable 'cek' [-Wunused-variable]
   78 |   int cek = 0;
      |       ^~~
feast.cpp:87:7: warning: unused variable 'ans' [-Wunused-variable]
   87 |   int ans = 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...