Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define int int64_t
- using namespace std;
- const int N = 10000001;
- bool primes[N];
- int pref[N];
- int get(int l, int r){
- if(l == 1)
- return pref[r];
- return pref[r] - pref[l - 1];
- }
- int f(int x, int l){
- return get(x, x + l - 1);
- }
- void count(){
- for (int i = 2; i <= N; i++)
- primes[i] = true;
- for (int i = 2; i <= N; i++)
- if (primes[i])
- for (int j = i * i; j <= N; j += i)
- primes[j] = false;
- pref[1] = 0;
- for(int i = 2; i <= N; i++)
- pref[i] = pref[i - 1] + primes[i];
- }
- void solve(){
- int q, l, k;
- cin >> q >> l >> k;
- count();
- while(q--){
- int tl, tr;
- tl = 2;
- tr = 10'000'000 - l;
- if(k > f(tl, l) || f(tr, l) > k)
- cout << "-1\n";
- else{
- while(tr - tl > 1){
- int tm = (tl + tr) / 2;
- if(f(tm, l) >= k)
- tl = tm;
- else
- tr = tm - 1;
- }
- cout << tl << ' ' << tl + l - 1 << '\n';
- }
- }
- }
- int32_t main() {
- int test_case = 1;
- //cin >> test_case;
- while(test_case--)
- solve();
- }
Advertisement
Add Comment
Please, Sign In to add comment