Advertisement
mickypinata

TOI16: Dino Cell

Nov 15th, 2021
842
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.94 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int K = 1e7 + 5;
  5.  
  6. int qs[K], k;
  7.  
  8. int getSum(int i){
  9.     return qs[k] * (i / k) + qs[i % k];
  10. }
  11.  
  12. int main(){
  13.  
  14.     int n;
  15.     scanf("%*d%d%d", &k, &n);
  16.     for(int i = 2; i <= k; ++i){
  17.         if(k % i == 0 && qs[i] == 0){
  18.             for(int j = i; j <= k; j += i){
  19.                 qs[j] = 1;
  20.             }
  21.         }
  22.     }
  23.     for(int i = 1; i <= k; ++i){
  24.         if(qs[i] == 0){
  25.             qs[i] = -1;
  26.         }
  27.         qs[i] += qs[i - 1];
  28.     }
  29.  
  30.     int pmn = 2e9;
  31.     int pmx = -2e9;
  32.     int ans = 0;
  33.     for(int i = 1; i <= n; ++i){
  34.         int x;
  35.         scanf("%d", &x);
  36.         int sum = getSum(x);
  37.         int prv = getSum(x - 1);
  38.         int mx = i == 1 ? sum : sum + pmx;
  39.         int mn = i == 1 ? sum : sum + pmn;
  40.         ans = max(ans, max(mx, -mn));
  41.         pmx = max(pmx, -prv);
  42.         pmn = min(pmn, -prv);
  43.     }
  44.     cout << ans;
  45.  
  46.     return 0;
  47. }
  48.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement