Submission #237185

# Submission time Handle Problem Language Result Execution time Memory
237185 2020-06-05T06:40:53 Z kartel Automobil (COCI17_automobil) C++14
0 / 100
552 ms 16248 KB
#include <bits/stdc++.h>
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
#define in(x) freopen(x, "r", stdin)
#define out(x) freopen(x, "w", stdout)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-O3")
#define F first
#define S second
#define pb push_back
#define N +1000500
#define MaxS N * N
#define M ll(1e9 + 7)
#define sz(x) (int)x.size()
#define re return
#define oo ll(1e18)
#define el '\n'
#define pii pair <int, int>
using namespace std;
//using namespace __gnu_pbds;
//typedef tree <int, null_type, less_equal <int> , rb_tree_tag, tree_order_statistics_node_update> ordered_set;
typedef long long ll;
typedef long double ld;

ll r[N], c[N], ans, n, m, q, x, y, i;
char cmd;

ll mult(ll x, ll y) {return (x * y) % M;}
ll sum(ll x, ll y) {return (x + y) % M;}
ll mi(ll x, ll y) {return (x - y + M) % M;}

ll bp(ll x, ll y)
{
    if (y == 0) return 1ll;
    if (y % 2) return mult(x, bp(x, y - 1));
    ll a = bp(x, y / 2);
    return mult(a, a);
}

int main()
{
    srand(time(0));
    ios_base::sync_with_stdio(0);
    iostream::sync_with_stdio(0);
    ios::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);

//    in("input.txt");
//    out("output.txt");

    cin >> n >> m >> q;

    ans = 0;
    for (i = 1; i <= n; i++)
    {
        r[i] = mult(mult((i - 1), m), m) + mult(mult(m, m + 1), bp(2, M - 2));
        ans = sum(ans, r[i]);
    }

    for (i = 1; i <= m; i++)
    {
        c[i] = mult(mult(mult(n, n - 1), bp(2, M - 2)), (m + i));
    }

    while (q--)
    {
        cin >> cmd >> x >> y;
        if (cmd == 'R')
        {
            ans = mi(ans, r[x]);
            r[x] = mult(r[x], y);
            ans = sum(ans, r[x]);
        }
        else
        {
            ans = mi(ans, c[x]);
            c[x] = mult(c[x], y);
            ans = sum(ans, c[x]);
        }
    }
    cout << ans << el;

}

//  x ^ 2 + y ^ 2 = 1
//  x * a_i + y * b_i
//  a_i = -b_i * tan(alpha)
//  a_i / -b_i = tan(alpha)
//  alpha = atan(a_i / (-b_i))
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 384 KB Output isn't correct
2 Incorrect 5 ms 384 KB Output isn't correct
3 Incorrect 5 ms 384 KB Output isn't correct
4 Incorrect 5 ms 384 KB Output isn't correct
5 Incorrect 5 ms 384 KB Output isn't correct
6 Incorrect 5 ms 384 KB Output isn't correct
7 Incorrect 5 ms 384 KB Output isn't correct
8 Incorrect 5 ms 384 KB Output isn't correct
9 Incorrect 5 ms 384 KB Output isn't correct
10 Incorrect 5 ms 384 KB Output isn't correct
11 Incorrect 91 ms 2808 KB Output isn't correct
12 Incorrect 298 ms 8768 KB Output isn't correct
13 Incorrect 26 ms 896 KB Output isn't correct
14 Incorrect 345 ms 10360 KB Output isn't correct
15 Incorrect 308 ms 9140 KB Output isn't correct
16 Incorrect 547 ms 16120 KB Output isn't correct
17 Incorrect 545 ms 16048 KB Output isn't correct
18 Incorrect 547 ms 16248 KB Output isn't correct
19 Incorrect 552 ms 16124 KB Output isn't correct
20 Incorrect 547 ms 15992 KB Output isn't correct