Cod sursa(job #733526)

Utilizator danalex97Dan H Alexandru danalex97 Data 12 aprilie 2012 13:11:40
Problema Teren Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
using namespace std;

#include <queue>
queue <int> Queue;

#define Dmax 311
#define For(a,b,c) for(a=b;a<=c;++a) 
int S[Dmax][Dmax];
int N,M,Sum,Nbr,Rez,X;

ifstream F("teren.in");
ofstream G("teren.out");

void CloseFiles()
{
	F.close();
	G.close();
}

int main(void)
{
	F>>N>>M>>X;
	
	int i,j;
	For(i,1,N)
		For(j,1,M)
			F>>S[i][j],
			S[i][j]+=S[i-1][j];
	
	For(i,1,N)
		For(j,i,N)
		{
			while (! Queue.empty() ) 
				Queue.pop();
			Nbr=Sum=0;
			
			int ii; 
			For(ii,1,M)
			{
				int Val=S[j][ii]-S[i-1][ii];
				Queue.push(Val);++Nbr;
				
				Sum+=Val;
				
				while ( Sum>X )
				{
					int El=Queue.front();
					Queue.pop();
					Sum=Sum-El,--Nbr;
				}
				
				Rez=max (Nbr* (j-i+1) , Rez );
			}
		}
	
	G<<Rez<<'\n';
	CloseFiles();
}