Submission #1308945

#TimeUsernameProblemLanguageResultExecution timeMemory
1308945lyra_g13Feast (NOI19_feast)C++20
30 / 100
29 ms5088 KiB
#include <bits/stdc++.h>
using ll = long long;
using namespace std;

int main() {
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(nullptr);

  ll n, s;
  cin >> n >> s;

  vector<ll> a(n);

  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }

  ll pos = 0;
  ll sum = 0;
  ll neg = 0;
  ll zero = 0;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    sum += a[i];
    if (a[i] > 0)
      pos++;
    if (a[i] == 0) {
      zero++;
    }
    if (a[i] < 0) {
      neg++;
    }
  }

  if (s == 1) {
    vector<ll> pref(n);
    pref[0] = a[0];
    for (int i = 1; i < n; i++) {
      pref[i] = pref[i - 1] + a[i];
    }

    ll minpref = 0;
    ll count = 0;
    ll maxcount = 0;
    for (int i = 0; i < n; i++) {
      count = pref[i] - minpref;
      if (count > maxcount) {
        maxcount = count;
      }
      minpref = min(minpref, pref[i]);
    }

    cout << maxcount << "\n";
    return 0;
  }

  // sub 1
  if (pos + zero == n) {
    cout << sum << "\n";
    return 0;
  }

  // sub2
  if (neg == 1 and s > 1) {
    sum = 0;
    for (int i = 0; i < n; i++) {
      if (a[i] >= 0) {
        sum += a[i];
      }
    }
    cout << sum << "\n";
    return 0;
  }

  // sub 3
}
#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...