Advertisement
hemel18681

Prime Matrix

Sep 25th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.67 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. using namespace std;
  4. vector<ll> v;
  5. int prime[100015];
  6. void sieve(){
  7.     for(ll p=2;p*p<=100009;p++){
  8.         if(prime[p]==0){
  9.             for(ll i=p*p;i<=100009;i=i+p){
  10.                 prime[i]=1;
  11.             }
  12.         }
  13.     }
  14. }
  15. void num(){
  16.     for(int i=2;i<=100009;i++){
  17.         if(prime[i]==0) {v.push_back(i);}
  18.     }
  19. }
  20. int main()
  21. {
  22.     sieve();
  23.     num();
  24.     prime[1]=1;
  25.     ll n,m;
  26.     cin>>n>>m;
  27.     vector<ll> ansr[n],ansc[m],tem,res;
  28.     ll a[n][m];
  29.     for(int i=0;i<n;i++){
  30.         for(int j=0;j<m;j++){
  31.             ll p; cin>>p;
  32.             if(prime[p]==0&&p!=1) a[i][j]=-1;
  33.             else a[i][j]=p;
  34.         }
  35.     }
  36.     for(int i=0;i<n;i++){
  37.         ll sum=0;
  38.         for(int j=0;j<m;j++){
  39.             if(a[i][j]!=-1){
  40.                 ll pos;
  41.                 pos=upper_bound(v.begin(),v.end(),a[i][j])-v.begin();
  42.                 ansr[i].push_back(v[pos]-a[i][j]);
  43.             }
  44.         }
  45.         if(ansr[i].size()!=0)
  46.             sum=accumulate(ansr[i].begin(), ansr[i].end(), 0);
  47.         tem.push_back(sum);
  48.     }
  49.     sort(tem.begin(),tem.end());
  50.     res.push_back(tem[0]);
  51.     tem.clear();
  52.     for(int j=0;j<m;j++){
  53.         ll sum=0;
  54.         for(int i=0;i<n;i++){
  55.             if(a[i][j]!=-1){
  56.                 ll pos=upper_bound(v.begin(),v.end(),a[i][j])-v.begin();
  57.                 ansc[j].push_back(v[pos]-a[i][j]);
  58.             }
  59.         }
  60.         if(ansc[j].size()!=0)
  61.             sum=accumulate(ansc[j].begin(), ansc[j].end(), 0);
  62.         tem.push_back(sum);
  63.     }
  64.     sort(tem.begin(),tem.end());
  65.     res.push_back(tem[0]);
  66.     sort(res.begin(),res.end());
  67.     cout<<res[0]<<endl;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement