제출 #1308979

#제출 시각아이디문제언어결과실행 시간메모리
1308979rohit_flytsappAutomobil (COCI17_automobil)C++20
0 / 100
27 ms31732 KiB
#include<iostream> #include<vector> #include<set> using namespace std; using ll = long long int; ll mod = 1e9 + 7; ll get_el(ll x, ll y, ll m){ return x*m + y + 1; } int main(){ int n, m, k; cin>>n>>m>>k; vector<ll> row_mults(n, 1), col_mults(m, 1); set<int> rows_a; set<int> cols_a; for(int _=0; _<k; _++){ char s; int x; ll y; cin>>s>>x>>y; x--; if(y == 1) continue; if(s == 'R'){ row_mults[x] *= y; row_mults[x] %= mod; rows_a.insert(x); } if(s == 'S'){ col_mults[x] *= y; col_mults[x] %= mod; cols_a.insert(x); } } vector<ll> row_sum(n), col_sum(m); for(int i=0; i<n; i++){ ll a = ll(i)*ll(m) + 1LL; row_sum[i] = ll(m)*(2LL*a + ll(m-1)) / 2LL; row_sum[i] %= mod; } for(int i=0; i<m; i++){ ll a = i+1; col_sum[i] = ll(n)*(2LL*a + ll(n-1)*ll(m)) / 2LL; col_sum[i] %= mod; } ll answer = 0; for(auto &el: row_sum){ answer+=el; answer %= mod; } // cout<<"Answer raw: "<<answer<<"\n"; for(auto &i: rows_a){ // cout<<"Row "<<i<<": mult "<<row_mults[i]<<" sum "<<row_sum[i]<<" added "<<(row_mults[i]-1)*row_sum[i]<<"\n"; answer += (row_mults[i]-1) * row_sum[i]; answer %= mod; } for(auto &i: cols_a){ // cout<<"Col "<<i<<": mult "<<col_mults[i]<<" sum "<<col_sum[i]<<" added "<<(col_mults[i]-1)*col_sum[i]<<"\n"; answer += (col_mults[i]-1) * col_sum[i]; answer %= mod; } cout<<answer<<"\n"; // for(auto &r: rows_a){ // for(auto &c: cols_a){ // ll cell = get_el(r, c, m); // ll min1 = row_mults[r] * cell; // ll min2 = col_mults[c] * cell; // ll add = row_mults[r] * col_mults[c]; // cout<<"Accounting cell: "<<cell<<" deleting "<<min1<<" and "<<min2<<" adding "<<add<<"!\n"; // min1 %= mod; // min2 %= mod; // add %= mod; // if(answer < min1) answer += mod; // answer -= min1; // answer %= mod; // if(answer < min2) answer += mod; // answer -= min2; // answer %= mod; // answer += add; // answer %= mod; // } // } // cout<<answer<<"\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...