2022年
2022年
10月
#include<bits/stdc++.h>
using namespace std;
//
#define F first
#define S second
#define PB push_back
#define MP make_pair
//
#define jing_an ios_base::sync_with_stdio(0); cin.tie(0);
//
#define rAll(x) (x).rbegin(),(x).rend();
#define All(x) (x).begin(),(x).end();
#define SIZE(x) ((int)(x).size())
//
#define maxE(x) (*max_element(ALL(x)))
#define minE(x) (*min_element(ALL(x)))
//
struct T{
char k;
int y;
};
//
int main(){
jing_an
int Y,X,n;cin>>Y>>X>>n;
vector<T>v(n);
for(int i=0;i<n;++i){
cin >> v[i].k >> v[i].y;
}
//
int total = Y*X;
int cnt = 0;
vector<int>g(Y,0);
for(int i=0;i<n;++i){
if(v[i].k=='A'){
int mH = 0;
int A = g[v[i].y+0];
int B = g[v[i].y+1];
int C = g[v[i].y+2];
int D = g[v[i].y+3];
A+=1;
B+=1;
C+=1;
D+=1;
mH = max(mH,A);
mH = max(mH,B);
mH = max(mH,C);
mH = max(mH,D);
//
if(mH>X){
cnt+=1;
continue;
}else{
total-=4;
}
for(int j=0;j<4;++j){
g[v[i].y+j] = mH;
}
}else if(v[i].k=='B'){
int mH = 0;
int A = g[v[i].y+0];
A+=3;
mH = max(mH,A);
//
if(mH>X){
cnt+=1;
continue;
}else{
total-=3;
}
for(int j=0;j<1;++j){
g[v[i].y+j] = mH;
}
}else if(v[i].k=='C'){
int mH = 0;
int A = g[v[i].y+0];
int B = g[v[i].y+1];
A+=2;
B+=2;
mH = max(mH,A);
mH = max(mH,B);
//
if(mH>X){
cnt+=1;
continue;
}else{
total-=4;
}
for(int j=0;j<2;++j){
g[v[i].y+j] = mH;
}
}else if(v[i].k=='D'){
int mH = 0;
int A = g[v[i].y+0];
int B = g[v[i].y+1];
if(A<3){
A = 3;
}else{
A += 1;
}
B += 3;
mH = max(mH,A);
mH = max(mH,B);
//
if(mH>X){
cnt+=1;
continue;
}else{
total-=4;
}
for(int j=0;j<2;++j){
g[v[i].y+j] = mH;
}
}else if(v[i].k=='E'){
int mH = 0;
int A = g[v[i].y+0];
int B = g[v[i].y+1];
int C = g[v[i].y+2];
if(A<2){
A = 2;
}else{
A += 1;
}
B += 2;
C += 2;
mH = max(mH,A);
mH = max(mH,B);
mH = max(mH,C);
//
if(mH>X){
cnt+=1;
continue;
}else{
total-=5;
}
for(int j=0;j<3;++j){
g[v[i].y+j] = mH;
}
}
}
cout << total << " " << cnt << endl;
}
06月
01月
Last updated
Was this helpful?