Submission #503508

#TimeUsernameProblemLanguageResultExecution timeMemory
503508jparkFeast (NOI19_feast)C++14
4 / 100
160 ms7752 KiB
#include<iostream> #define ll long long using namespace std; int main(){ int n,k; cin >> n >> k; ll arr[n]; ll pre[n+1]; int negc = 0; int a; bool ans = false; for(int x=0; x<n; x++){ cin >> a; arr[x] = a; pre[x] = 0; if(a<0) ++negc; } pre[n] = 0; ll total = 0; if(negc==0&&!ans){ for(int x=0; x<n; x++){ total += arr[x]; } cout << total; ans = true; } if(negc==1&&!ans){ if(k>=2){ for(int x=0; x<n; x++){ if(arr[x]>0){ total += arr[x]; } } cout << total; } else{ ll all = 0; for(int x=0; x<n; x++){ all += arr[x]; } ll before,after = 0; bool reached = false; for(int x=0; x<n; x++){ if(arr[x]<0){ reached = true; continue; } if(reached){ after += arr[x]; } else{ before += arr[x]; } } total = max(all,max(before,after)); } ans = true; } if(k==1&&!ans){ pre[0] = 0; for(int x=1; x<n+1; x++){ pre[x] = pre[x-1]+arr[x-1]; } int l,r = 0; while(r<n){ total = max(total,pre[r]-pre[l]); if(l==r){ ++r; continue; } } } }
#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...