| 比赛 | 
    20120705 | 
    评测结果 | 
    AAAEEEEEEE | 
    | 题目名称 | 
    绘画 | 
    最终得分 | 
    30 | 
    | 用户昵称 | 
    Citron酱 | 
    运行时间 | 
    0.000 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    0.00 MiB  | 
    | 提交时间 | 
    2012-07-05 11:52:50 | 
显示代码纯文本
#include <fstream>
#include <string>
#define I_F "drawing.in"
#define O_F "drawing.out"
const short MAXn=100;
const short MAXs=100;
std::ifstream fin(I_F);
std::ofstream fout(O_F);
int d[MAXs][MAXn][MAXn];
int now[MAXn][MAXn];
short n, l=0;
void Save();
void Load();
void Paint();
inline short Abs(const short&);
int main()
{
	int m;
	std::string t;
	for (short i=0; i<MAXn; ++i)
		for (short j=0; j<MAXn; ++j)
			now[i][j]=1;
	for (fin>>n>>m>>m; m>0; --m)
	{
		fin>>t;
		if (t=="SAVE")
			Save();
		else if (t=="LOAD")
			Load();
		else
			Paint();
	}
	for (short i=0; i<n; ++i)
	{
		for (short j=0; j<n-1; ++j)
			fout<<now[i][j]<<' ';
		fout<<now[i][n-1]<<std::endl;
	}
	fin.close();
	fout.close();
}
void Save()
{
	for (short i=0; i<n; ++i)
		for (short j=0; j<n; ++j)
			d[l][i][j]=now[i][j];
	++l;
}
void Load()
{
	short x;
	fin>>x;
	--x;
	for (short i=0; i<n; ++i)
		for (short j=0; j<n; ++j)
			now[i][j]=d[x][i][j];
}
void Paint()
{
	short a,b,c,d;
	int e;
	fin>>e>>a>>b>>c>>d;
	for (int i=a; i<=c; ++i)
		for (int j=b+Abs((i%2)-(a%2)); j<=d; j+=2)
			now[i][j]=e;
}
inline short Abs(const short &x)
{
	return (x<0)?-x:x;
}