#include #include #include #include #include #include #include #include #include #include using namespace std; double s[110][110]; double w[110][110]; void gentest(); bool noblock(int r1,int c1,int r2,int c2) { int dt=(r2>r1)?1:-1; for(int i=r1;i!=r2;i+=dt) { if(i==r1) continue; double p= (double)(c1*(r2-i)+c2*(i-r1))/(r2-r1); if ((w[i][(int) (p)] > 1e-9 || s[i][(int) (p)] > 1e-9) && (w[i][(int)(p)] >= p - floor(p))) return false; if ((w[i][(int) (p+1)] > 1e-9 || s[i][(int) (p+1)] > 1e-9) && (w[i][(int)(p+1)] >= floor(p+1) - p)) return false; } return true; } int main() { int K,d,i,j,k,l; double E,E2; ifstream fin("seating.in"); fin>>K; for(int testcase=0;testcase>d>>E; E2=E*E; for(i=0;i>s[i][j]>>w[i][j]; double maxsum=0; for(i=0;i1e-9 && (k-i)*(k-i)+(l-j)*(l-j) < E2 && noblock(i,j,k,l) ) { sum+=s[k][l]*(1- sqrt((double)(k-i)*(k-i)+(l-j)*(l-j))/E); } if(sum>maxsum) maxsum=sum; } printf("Data Set %d:\n%0.2f\n",testcase+1,maxsum); } return 0; }