Pagini recente » Cod sursa (job #64034) | Cod sursa (job #629962) | Cod sursa (job #535225) | Cod sursa (job #579227) | Cod sursa (job #2513608)
#include <bits/stdc++.h>
using namespace std;
ifstream f("zone.in");
ofstream g("zone.out");
const int NMAX = 600;
const int SMAX = 10;
long long n,mat[NMAX][NMAX],sum[SMAX], mats[NMAX][NMAX], used[SMAX];
vector < pair < int, int > > v;
inline bool available(long long s){
for(int i = 1 ; i <= 9 ; i++)
if(sum[i] == s && !used[i]){
used[i] = 1;
return 1;
}
return 0;
}
inline int SUM(const int &is, const int &js, const int &ij, const int &jj){
return available(mats[ij][jj] - mats[is-1][jj] - mats[ij][js-1] + mats[is-1][js-1]);
}
int main(){
int i,j;
int ij,jj,is,js;
f >> n;
for(i = 1 ; i <= 9 ; i++)
f >> sum[i];
for(i = 1 ; i <= n ; i++)
for(j = 1 ; j <= n ; j++){
f >> mat[i][j];
mats[i][j] = mats[i - 1][j] + mats[i][j - 1] - mats[i - 1][j - 1] + mat[i][j];
}
for(i = 1 ; i < n ; i++)
for(j = i + 1 ; j < n ; j++)
v.push_back(make_pair(i,j));
for(auto it: v)
for(auto its: v){
memset(used, 0, sizeof(used));
///1
is = js = 1;
ij = it.first;
jj = its.first;
if(!SUM(is,js,ij,jj))
continue;
///2
is = 1;
js = its.first + 1;
ij = it.first;
jj = its.second;
if(!SUM(is,js,ij,jj))
continue;
///3
is = 1;
js = its.second + 1;
ij = it.first;
jj = n;
if(!SUM(is,js,ij,jj))
continue;
///4
is = it.first + 1;
js = 1;
ij = it.second;
jj = its.first;
if(!SUM(is,js,ij,jj))
continue;
///5
is = it.first + 1;
js = its.first + 1;
ij = it.second;
jj = its.second;
if(!SUM(is,js,ij,jj))
continue;
///6
is = it.first + 1;
js = its.second + 1;
ij = it.second;
jj = n;
if(!SUM(is,js,ij,jj))
continue;
///7
is = it.second + 1;
js = 1;
ij = n;
jj = its.first;
if(!SUM(is,js,ij,jj))
continue;
///8
is = it.second + 1;
js = its.first + 1;
ij = n;
jj = its.second;
if(!SUM(is,js,ij,jj))
continue;
///9
is = it.second + 1;
js = its.second + 1;
ij = n;
jj = n;
if(!SUM(is,js,ij,jj))
continue;
g << it.first << " " << it.second << " " << its.first << " " << its.second;
return 0;
}
return 0;
}