Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. #include <fstream>
  2. #include <bitset>
  3. using namespace std;
  4. ifstream fin("memory004.in");
  5. ofstream fout("memory004.out");
  6.  
  7. struct secv { unsigned short s=0,d=0;};
  8. bitset<10001> prim; // prim[i] == 1 - neprim / prim[i] == 0 - prim
  9.  
  10. secv P[1002],M[1002],U[1002],C[1002];
  11.  
  12.  
  13. int main()
  14. {
  15. unsigned short n,m,a;
  16. fin>>n>>m;
  17. prim[0] =prim[1] = 1;
  18. for (int i = 4; i <= 10000; i += 2)
  19. prim[i] = 1;
  20. for (int i = 3; i * i <= 10000; i += 2) {
  21. if (prim[i] == 0) {
  22. for (int j = i * i; j <= 10000; j += i)
  23. prim[j] = 1;
  24. }
  25. }
  26. for(int i=1;i<=n;i++)
  27. for(int j=1;j<=m;j++)
  28. {
  29. fin>>a;
  30. if(prim[a]==0)
  31. {
  32. if(C[j].s==0)
  33. C[j].s=C[j].d=i;
  34. else C[j].d=i;
  35. if(C[j].d-C[j].s>=M[j].d-M[j].s)
  36. M[j]=C[j];
  37. if(C[j].s==1) P[j]=C[j];
  38. if(C[j].d==n) U[j]=C[j];
  39. }
  40. else C[j].s=C[j].d=0;
  41. }
  42.  
  43. int l=0,lmax=0;
  44. for(int j=1;j<=m;j++)
  45. {
  46. if(P[j].s==1 && (j==1 || U[j-1].d==n))
  47. { l=l+P[j].d-P[j].s+1;
  48. if(l>lmax) lmax=l;
  49. }
  50. else l=P[j].d-P[j].s+1;
  51. if(U[j].d!=n) l=0;
  52. else if(U[j].s!=1) l=U[j].d-U[j].s+1;
  53. if(M[j].s!=1 && M[j].d!=n)
  54. if(M[j].d-M[j].s+1>lmax) lmax=M[j].d-M[j].s+1;
  55. }
  56. fout<<lmax;
  57. return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement