Cod sursa(job #1383106)
Utilizator | Data | 9 martie 2015 21:33:04 | |
---|---|---|---|
Problema | Zone | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.72 kb |
#include <fstream>
#include <map>
#include <algorithm>
using namespace std;
ifstream fin("zone.in");
ofstream fout("zone.out");
map<int,int> m;
long int a,b,i,n,v[520][520],j,i2,j2,r[10],l;
long int suma(int a,int b,int c,int d)
{
return v[a][b]+v[c][d]-v[a][d]-v[c][b];
}
void back()
{
for(i=1;i<n-1;i++)
for(j=1;j<n-1;j++)
if(m[suma(i,j,0,0)])
for(i2=i+1;i2<n;i2++)
if(m[suma(i2,j,i,0)])
for(j2=j+1;j2<n;j2++)
{
r[1]=suma(i,j,0,0);
r[2]=suma(i,j2,0,j);
r[3]=suma(i,n,0,j2);
r[4]=suma(i2,j,i,0);
r[5]=suma(i2,j2,i,j);
r[6]=suma(i2,n,i,j2);
r[7]=suma(n,j,i2,0);
r[8]=suma(n,j2,i2,j);
r[9]=suma(n,n,i2,j2);
for(b=1;b<=9;b++)
{
if(m[r[b]])
m[r[b]]--;
else
break;
}
if(b==10){
fout<<i<<" "<<i2<<" "<<j<<" "<<j2;
fin.close();
fout.close();
exit(0);
}
else
for(b--;b;b--)
m[r[b]]++;
}
}
int main()
{
fin>>n;
for(i=1;i<=9;i++)
{
fin>>a;m[a]++;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
fin>>a;
v[i][j]=v[i-1][j]+v[i][j-1]+a-v[i-1][j-1];
}
back();
return 0;
}