讨论 / What is wrong?!
飞雪天涯 2008-11-05 07:09:00
点我顶贴 收藏 删除
#include<iostream>

#define MAXH 2000

#define MAXW 20

#define MAXINT 543894740

using namespace std;

int map[MAXH][MAXW],w;

int main (void){

memset(map,0,sizeof(map));

int n,w;

cin>>n>>w;

int /*level=0,*/highest=-MAXINT;

for (int i=0;i<n;i++){

int a;cin>>a;

int min=MAXINT,minj=-1;

for (int j=0;j<=w-a;j++){

bool isok=false;

int lev=-1,x;

while (!isok){

lev++;

isok=true;

for (int k=j;k<j+a;k++)

if (map[lev][k]){

isok=false;

break;

}

}

if (lev<min) min=lev,minj=j;

}

for (int j=min;j<min+a;j++)

for (int k=minj;k<minj+a;k++)

map[j][k]=1;

if (min+a>highest)

highest=min+a;

}

cout<<highest;

//while(1);

return 0;

}

查看更多回复
提交回复