Untitled
unknown
plain_text
3 years ago
1.2 kB
5
Indexable
#include<bits/stdc++.h> using namespace std; long long m=1e6+7; vector<bool>isPrime(m+1,true); void sieve() { isPrime[0]=isPrime[1]=false; for (int i=2;i*i<=m;i++) { if(isPrime[i]) { for(int j=i*i;j<=m;j+=i) { isPrime[j]=false; } } } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); sieve(); long long n,l,r; cin>>n>>l>>r; long long a[n+1]; for(int i=1;i<=n;i++) { cin>>a[i]; } map<long long,long long>cnt,pos; for(int i=1;i<=n;i++) { if(isPrime[a[i]]) { cnt[i]=cnt[i-1]+1; } else { cnt[i]=cnt[i-1]; } pos[cnt[i]]=i; } for(int i=1;i<=n;i++) { cout<<cnt[i]; } cout<<"\n"; long long d=0; for(int i=1;i<=n;i++) { auto left=cnt.upper_bound(cnt[i-1]+l); auto right=cnt.upper_bound(cnt[i-1]+r); if(left!=cnt.end()&&right!=cnt.end()) { cout<<i<<" "<<pos[cnt[(*right).first]]<<" "<<(*left).first<<"\n"; d+=pos[cnt[(*right).first]]-(*left).first+1; } } cout<<d; return 0; }
Editor is loading...