Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <algorithm>
- using namespace std;
- ifstream f("intrus.in");
- ofstream g("intrus.out");
- struct suspect
- {
- int lin, col, per, mv;
- };
- suspect v[100001];
- int p,n,m,d;
- int i,j,ii,jj;
- int a[1001][1001];
- int vip[1001][1001];
- int fr[1000001];
- int nrs;
- int sus,jos,st,dr;
- bool c[1000001];
- bool cmp(suspect a, suspect b)
- {
- if (a.per>b.per)
- return 1;
- if (a.per==b.per && a.mv>b.mv)
- return 1;
- if (a.per==b.per && a.mv==b.mv && a.lin<b.lin)
- return 1;
- if (a.per==b.per && a.mv==b.mv && a.lin==b.lin && a.col<b.col)
- return 1;
- return 0;
- }
- int main()
- {
- c[0]=c[1]=1;
- for (i=2;i<=1000000;i++)
- if (c[i]==0)
- for (j=i*2;j<=1000000;j+=i)
- c[j]=1;
- f>>p;
- f>>n>>m>>d;
- d=(d-1)/2;
- for (i=1;i<=n;i++)
- for (j=1;j<=m;j++)
- {
- f>>a[i][j];
- if (a[i][j])
- fr[a[i][j]]++;
- }
- if (p==1)
- {
- for (i=1;i<=n;i++)
- for (j=1;j<=m;j++)
- nrs+=(fr[a[i][j]]>1);
- g<<nrs;
- }
- else
- {
- for (i=1;i<=n;i++)
- for (j=1;j<=m;j++)
- if (fr[a[i][j]]>1)
- {
- nrs++;
- v[nrs].lin=i, v[nrs].col=j;
- sus=max(0, i-d);
- st=max(0, j-d);
- jos=min(n, i+d);
- dr=min(m, j+d);
- for (ii=sus;ii<=jos;ii++)
- for (jj=st;jj<=dr;jj++)
- if (c[a[ii][jj]]==0)
- {
- v[nrs].per++;
- v[nrs].mv=max(v[nrs].mv, a[ii][jj]);
- }
- }
- if (nrs)
- {
- sort(v+1,v+nrs+1,cmp);
- for (i=1;i<=nrs;i++)
- g<<a[v[i].lin][v[i].col]<<" "<<v[i].lin<<" "<<v[i].col<<"\n";
- }
- else
- g<<-1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement