比赛 20161116 评测结果 AAAWWWWWWW
题目名称 删除他们! 最终得分 30
用户昵称 Shirry 运行时间 5.166 s
代码语言 C++ 内存使用 114.78 MiB
提交时间 2016-11-16 09:19:17
显示代码纯文本
#include<cstdio>
#include<vector>
char buf[1<<15],*fs,*ft;
inline char gc(){
	return fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft)?0:*fs++;
}
inline int read(){//看看数据大小
	int x=0,ch=gc();
	bool rev=false;
	while(ch<'0'||ch>'9'){
		if(ch=='-')rev=true;
		ch=gc();
	}
	while(ch>='0'&&ch<='9'){
		x=(x<<1)+(x<<3)+ch-'0';
		ch=gc();
	}
	return rev?~x+1:x;
}
using namespace std;
vector<int>A[10000000];
int n,m,q,sum=0;
void Init(int x,int y){
	for(int i=0;i<x;i++){
		for(int j=0;j<y;j++){
			A[i].push_back(1);
		}
	}
}
void Polishing(){
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(i<n-1&&A[i][j]==0&&A[i+1][j]==1){
				A[i][j]=1;
				A[i+1][j]=0;
			}
			if(j<m-1&&A[i][j]==0&&A[i][j+1]==1){
				A[i][j]=1;
				A[i][j+1]=0;
			}
			if(i<n-1&&A[i][j]==0&&A[i+1][0]==1){
				A[i][n-1]=1;
				A[i+1][0]=0;
			}
		}
	}
}
void Del(int x,int y,int x1,int y1){
	for(int i=x;i<=x1;i++){
		for(int j=y;j<=y1;j++){
			if(A[i][j]==1)
				sum++;
			A[i][j]=0;
		}
	}
}
int main(){
	freopen("deleteit.in","r",stdin);
	freopen("deleteit.out","w",stdout);
	n=read();
	m=read();
	q=read();
	Init(n,m);
	for(int i=1;i<=q;i++){
		int x,y,x1,y1;
		x=read();
		y=read();
		x1=read();
		y1=read();
		Del(x,y,x1,y1);
		Polishing();
	}
	sum=n*m-sum;
	printf("%d",sum);
	return 0;
}