fork download
  1. #include <cstdio>
  2.  
  3. const size_t MAXN = 200'000;
  4.  
  5. bool a[MAXN];
  6. long k[MAXN];
  7. // 38-pdp
  8. int main(){
  9. long N;
  10. scanf("%ld", &N);
  11.  
  12. for(long i = 0; i < N; ++i) {
  13. int temp;
  14. scanf("%d", &temp);
  15. a[i] = temp;
  16. }
  17. for(long i = 0; i < N; ++i) {
  18. scanf("%ld", &k[i]);
  19. }
  20.  
  21. long num_switch = 0; // Το πλήθος των διακοπτών που πατήσαμε.
  22. for (long i = 0; i < N; ++i) {
  23. if (a[i]) {
  24. a[i] = 0;
  25. ++num_switch;
  26. // Αλλάζουμε την κατάσταση των επόμενων k[i] διακοπτών.
  27. for (int j = i + 1; j <= i + k[i]; ++j) {
  28. a[j] = !a[j];
  29. }
  30. }
  31. }
  32.  
  33. printf("%ld\n", num_switch);
  34.  
  35. return 0;
  36. }
Success #stdin #stdout 0s 5304KB
stdin
6
1 0 0 1 1 0
3 2 3 1 1 0
stdout
3