fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define fst first
  5. #define snd second
  6.  
  7. typedef long long ll;
  8. typedef pair<int, int> ii;
  9.  
  10. const ll LINF = (ll)1e18;
  11. const int INF = (int)1e9;
  12.  
  13. const int N = (int)1e6 + 5;
  14.  
  15. int n;
  16. int a[N];
  17. ll sum[N];
  18.  
  19. bool isPrime[N];
  20.  
  21. void sieve() {
  22. for (int i = 2; i < N; i++) isPrime[i] = true;
  23.  
  24. for (int i = 2; i * i < N; i++) {
  25. if (isPrime[i]) {
  26. for (int j = i * i; j < N; j += i) isPrime[j] = false;
  27. }
  28. }
  29. }
  30.  
  31. int main() {
  32. ios::sync_with_stdio(0);
  33. cin.tie(0);
  34. cin >> n;
  35. for (int i = 1; i <= n; i++) {
  36. cin >> a[i];
  37. sum[i] = sum[i - 1] + a[i];
  38. }
  39.  
  40. sieve();
  41.  
  42. ll ans = -LINF;
  43. ll min_sum_l = LINF;
  44. for (int r = 2; r <= n; r++) {
  45. if (isPrime[r]) {
  46. ll max_sum = sum[r] - min_sum_l;
  47. ans = max(ans, max_sum);
  48. min_sum_l = min(min_sum_l, sum[r - 1]);
  49. }
  50. }
  51.  
  52. cout << ans << '\n';
  53. }
  54.  
Success #stdin #stdout 0.01s 6524KB
stdin
6
9 5 -2 6 -1 1
stdout
8