Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- int Imax[1000000],J,Jmax[1000000];
- int main()
- {
- int c,n;
- ifstream fin("oneout.in");
- fin>>c>>n;
- int a[n+1]; /// Sirul de numere
- int Max=0; /// Valoarea maxima din sir
- for(int i=1;i<=n;++i)
- fin>>a[i],Max=max(a[i],Max);
- int nlp[Max+1]; /// Numere libere de patrate
- for(int i=1;i<=Max;++i) /// Marcam ca si cum toate sunt libere de patrate
- nlp[i]=0;
- for(int i=2;i*i<=Max;++i) /// Marcam cu 1 cele ce nu sunt libere de patrate
- for(int j=i*i;j<=Max;j+=i*i) /// un ciur asemanator cu Eratostene
- nlp[j]=1;
- ofstream fout("oneout.out");
- if(c==1)
- {
- int sol=0; /// Solutia
- for(int i=1;i<=n;++i)
- if(!nlp[a[i]]) /// Daca a[i] e liber de patrate
- ++sol; /// incrementam solutia
- fout<<sol<<'\n';
- }
- else
- {
- int Secv,Smax=0,N=1,I;
- for(int i=2;i<n;++i)
- if(!nlp[a[i-1]]&&nlp[a[i]]&&!nlp[a[i+1]]) /// a[i-1]=liber de patrate nlp[a[i]]=1 si a[i+1]=liber de patrate
- {
- Secv=0;
- I=i-1; /// Ma deplasez la stanga
- while(!nlp[a[I]])
- {
- ++Secv;
- if(I>1)
- --I;
- else
- break;
- }
- if(nlp[a[I]])
- ++I;
- J=i+1; /// Ma deplasez la dreapta
- while(!nlp[a[J]])
- {
- ++Secv;
- if(J<n)
- ++J;
- else
- break;
- }
- if(nlp[a[J]])
- --J;
- if(Secv>=Smax)
- {
- if(Secv==Smax)
- ++N;
- else
- N=1,Smax=0;
- Smax=Secv,Imax[N]=I,Jmax[N]=J;
- }
- }
- fout<<Smax<<' '<<N<<'\n';
- for(int i=1;i<=N;++i)
- fout<<Imax[i]<<' '<<Jmax[i]<<'\n';
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment