/*
Code by @marlov
*/
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <string>
#include <cmath>
#include <algorithm>
#include <iomanip>
#include <utility>
#include <set>
#include <unordered_set>
#include <map>
#include <unordered_map>
#include <stack>
#include <queue>
#include <iterator>
using namespace std;
typedef long long ll;
typedef pair<long long,long long> pi;
#define maxV 1000002
#define MOD 1000000007
//const long long MOD=1000000007;
long long N,M,K;
long long sum=0;
set<long long> cols;
set<long long> rows;
long long cm[maxV];
long long rm[maxV];
long long qsum(long long T,long long s,long long e){
T%=MOD;
s%=MOD;
e%=MOD;
if(T%2==0) return ((T/2)*(s+e))%MOD;
else return (((s+e)/2)*(T))%MOD;
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0);
cin>>N>>M>>K;
fill(cm,cm+maxV,1);
fill(rm,rm+maxV,1);
char c;
long long x,m;
for(long long i=0;i<K;i++){
cin>>c>>x>>m;
x--;
if(c=='R'){
rows.insert(x);
rm[x]*=m;
rm[x]%=MOD;
}else if(c=='S'){
cols.insert(x);
cm[x]*=m;
cm[x]%=MOD;
}
}
for(long long i=0;i<N;i++){
sum+=rm[i]*(qsum(M,i*M+1,i*M+M));
//sum+=MOD;
sum%=MOD;
}
//cout<<"1st: "<<sum<<'\n';
for(long long i:cols){
//cout<<(qsum(N,i+1,(N-1)*M+i+1))<<'\n';
sum+=(cm[i]-1)*(qsum(N,i+1,(N-1)*M+i+1));
//sum+=MOD;
sum%=MOD;
}
//cout<<"2nd: "<<sum<<'\n';
for(long long i:cols){
for(long long j:rows){
long long cv=M*j+i+1;
sum-=(cm[i]+rm[j]-1)*cv;
//sum+=MOD;
sum%=MOD;
sum+=(cm[i]*rm[j])*cv;
sum%=MOD;
}
}
cout<<sum%MOD<<'\n';
return 0;
}
/* stuff you should look for
* long long overflow, array bounds
* special cases (n=1,n=0?)
* do smth instead of nothing and stay organized
*/
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
10 ms |
16000 KB |
Output isn't correct |
2 |
Incorrect |
10 ms |
16000 KB |
Output isn't correct |
3 |
Incorrect |
10 ms |
16000 KB |
Output isn't correct |
4 |
Incorrect |
10 ms |
16000 KB |
Output isn't correct |
5 |
Incorrect |
10 ms |
16000 KB |
Output isn't correct |
6 |
Incorrect |
10 ms |
16000 KB |
Output isn't correct |
7 |
Incorrect |
11 ms |
16000 KB |
Output isn't correct |
8 |
Incorrect |
10 ms |
16000 KB |
Output isn't correct |
9 |
Incorrect |
10 ms |
16000 KB |
Output isn't correct |
10 |
Incorrect |
11 ms |
16000 KB |
Output isn't correct |
11 |
Incorrect |
12 ms |
16000 KB |
Output isn't correct |
12 |
Incorrect |
19 ms |
16000 KB |
Output isn't correct |
13 |
Incorrect |
11 ms |
16000 KB |
Output isn't correct |
14 |
Incorrect |
17 ms |
16000 KB |
Output isn't correct |
15 |
Incorrect |
17 ms |
16000 KB |
Output isn't correct |
16 |
Incorrect |
21 ms |
16000 KB |
Output isn't correct |
17 |
Incorrect |
24 ms |
16128 KB |
Output isn't correct |
18 |
Incorrect |
22 ms |
16000 KB |
Output isn't correct |
19 |
Incorrect |
21 ms |
16000 KB |
Output isn't correct |
20 |
Incorrect |
22 ms |
16000 KB |
Output isn't correct |