cses

My solution for the coding challenges of cses.fi
git clone https://git.tronto.net/cses
Download | Log | Files | Refs | README

sliding_window_sum_3220.cpp (426B)


      1 #include <iostream>
      2 #include <vector>
      3 
      4 int main() {
      5 	size_t n, k;
      6 	long long x, a, b, c, sum{0}, sol{0};
      7 	std::cin >> n >> k >> x >> a >> b >> c;
      8 
      9 	std::vector<long long> v(k);
     10 	for (size_t i = 0; i < k; i++) {
     11 		sum += x;
     12 		v[i] = x;
     13 		x = (a*x + b) % c;
     14 	}
     15 
     16 	sol = sum;
     17 	for (size_t i = 0; i < n-k; i++) {
     18 		sum -= v[i%k];
     19 		v[i%k] = (a*v[(i-1+k)%k] + b) % c;
     20 		sum += v[i%k];
     21 		sol ^= sum;
     22 	}
     23 
     24 	std::cout << sol << "\n";
     25 }