QOJ.ac
QOJ
The 2nd Universal Cup Finals is coming! Check out our event page, schedule, and competition rules!
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#334566 | #8049. Equal Sums | ucup-team1055 | Compile Error | / | / | C++14 | 3.3kb | 2024-02-22 05:11:33 | 2024-02-22 05:11:33 |
Judging History
This is the latest submission verdict.
- [2024-02-22 05:11:33]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2024-02-22 05:11:33]
- Submitted
answer
#include <bits/stdc++.h>
#define rep(i, s, n) for (int i = (int)(s); i < (int)(n); i++)
#define rrep(i, s, n) for (int i = (int)(n)-1; i >= (int)(s); i--)
#define all(v) v.begin(), v.end()
using ll = long long;
using ld = long double;
using ull = unsigned long long;
template <typename T> bool chmin(T &a, const T &b) {
if (a <= b) return false;
a = b;
return true;
}
template <typename T> bool chmax(T &a, const T &b) {
if (a >= b) return false;
a = b;
return true;
}
using namespace std;
template <ll m> struct modint {
using mint = modint;
ll a;
modint(ll x = 0) : a((x % m + m) % m) {}
static constexpr ll mod() {
return m;
}
ll val() const {
return a;
}
ll& val() {
return a;
}
mint pow(ll n) const {
mint res = 1;
mint x = a;
while (n) {
if (n & 1) res *= x;
x *= x;
n >>= 1;
}
return res;
}
mint inv() const {
return pow(m - 2);
}
mint& operator+=(const mint rhs) {
a += rhs.a;
if (a >= m) a -= m;
return *this;
}
mint& operator-=(const mint rhs) {
if (a < rhs.a) a += m;
a -= rhs.a;
return *this;
}
mint& operator*=(const mint rhs) {
a = a * rhs.a % m;
return *this;
}
mint& operator/=(mint rhs) {
*this *= rhs.inv();
return *this;
}
friend mint operator+(const mint& lhs, const mint& rhs) {
return mint(lhs) += rhs;
}
friend mint operator-(const mint& lhs, const mint& rhs) {
return mint(lhs) -= rhs;
}
friend mint operator*(const mint& lhs, const mint& rhs) {
return mint(lhs) *= rhs;
}
friend mint operator/(const mint& lhs, const mint& rhs) {
return mint(lhs) /= rhs;
}
friend bool operator==(const modint &lhs, const modint &rhs) {
return lhs.a == rhs.a;
}
friend bool operator!=(const modint &lhs, const modint &rhs) {
return !(lhs == rhs);
}
mint operator+() const {
return *this;
}
mint operator-() const {
return mint() - *this;
}
};
using modint998244353 = modint<998244353>;
using modint1000000007 = modint<1'000'000'007>;
typedef modint998244353 mint;
const int mx = 500;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, m; cin >> n >> m;
vector<int> lx(n), rx(n);
rep(i,0,n){
cin >> lx[i] >> rx[i];
}
vector<int> ly(m), ry(m);
rep(i,0,m){
cin >> ly[i] >> ry[i];
}
vector dp(n+1, vector(m+1, vector<mint>(2*mx+1)));
dp[0][0][mx] = 1;
rep(i,0,n + 1){
rep(j,0,m + 1){
if (i > 0){
vector<mint> rui(2*mx+2);
rep(x,0,2*mx+1){
rui[x+1] = rui[x] + dp[i-1][j][x];
}
rep(x,mx,2*mx+1){
dp[i][j][x] = rui[x-lx[i-1]+1] - rui[x-rx[i-1]];
}
}
if (j > 0){
vector<mint> rui(2*mx+2);
rep(x,0,2*mx+1){
rui[x+1] = rui[x] + dp[i][j-1][x];
}
rep(x,0,mx){
dp[i][j][x] = rui[x+ry[j-1]+1] - rui[x+ly[j-1]];
}
}
if (i > 0){
if (j > 0){
cout << dp[i][j][mx].val();
if (j == m) cout << '\n';
else cout << ' ';
}
}
}
}
}
Details
answer.code: In function ‘int main()’: answer.code:118:16: error: missing template arguments before ‘dp’ 118 | vector dp(n+1, vector(m+1, vector<mint>(2*mx+1))); | ^~ answer.code:119:9: error: ‘dp’ was not declared in this scope 119 | dp[0][0][mx] = 1; | ^~