Pagini recente » Cod sursa (job #89375) | Cod sursa (job #1380319) | Cod sursa (job #2489426) | Cod sursa (job #2875959) | Cod sursa (job #590116)
Cod sursa(job #590116)
#include<stdio.h>
#include<algorithm>
#define N 502
using namespace std;
int n,s[9],y[N][N],ss[9];
int main() {
int i,j,pas,i1,k1,i2,j1,iii1,ii1,i3;
freopen("zone.in","r",stdin);
freopen("zone.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=9;++i)
scanf("%d",&s[i]);
sort(&s[1],&s[n+1]);
for(i=1;i<=n;++i)
for(j=1;j<=n;++j) {
scanf("%d",&y[i][j]);
y[i][j]+=y[i-1][j]+y[i][j-1]-y[i-1][j-1];
}
for(i=1;i<=n;++i) {
for(iii1=1;iii1<=9;++iii1) {
pas=1<<8;
for(j=0;pas!=0;pas>>=1) {
if(j+pas<=n && y[i][j+pas]<=s[i1])
j+=pas;
}
if(y[i][j]==s[iii1]) {
ss[iii1]==1;
}
else
break;
}
for(i1=1;i1<=9;++i1) if(ss[i1]!=1) {
pas=1<<8;
for(i2=0;pas!=0;pas>>=1) {
if(i2+pas<=n && y[i2+pas][j]<=s[j1])
i2+=pas;
}
if(y[i2][j]==s[i1]) {
ss[i1]==1;
}
else {
ss[iii1]=0;
break;
}
}
for(ii1=1;ii1<=9;++ii1) if(ss[ii1]!=1) {
pas=1<<8;
for(i3=0;pas!=0;pas>>=1) {
if(i3+pas<=n && y[i][i3+pas]<=s[j1])
i3+=pas;
}
if(y[i][i3]==s[ii1]) {
ss[ii1]==1;
}
else {
ss[iii1]=0;
s[i1]=0;
break;
}
}
ss[iii1]=0;
s[i1]=0;
ss[ii1]=1;
}
return 0;
}