提出 #58689676
ソースコード 拡げる
#include <limits.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <list>
#include <algorithm>
#include <cassert>
#include <cfloat>
#include <complex>
#include <functional>
#include <iomanip>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <regex>
#include <set>
#include <stack>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <random>
using namespace std;
#include <atcoder/all>
using namespace atcoder;
#define rep(i, n) for (ll i = 0; i < (n); ++i)
#define repE(i, l, r) for (ll i = (l); i <= (r); ++i)
#define rrepE(i, l, r) for (ll i = (l); i >= (r); --i)
#define Sort(v) sort(v.begin(), v.end())
#define rSort(v) sort(v.rbegin(), v.rend())
#define Uniq(v) Sort(v), v.erase(unique(v.begin(), v.end()), v.end())
#define Reverse(v) reverse(v.begin(), v.end())
#define All(a) (a).begin(),(a).end()
#define Lower_bound(v, y) \
distance(v.begin(), lower_bound(v.begin(), v.end(), y))
#define Upper_bound(v, y) \
distance(v.begin(), upper_bound(v.begin(), v.end(), y))
#define __bpcll __builtin_popcountll
#define sz(x) (ll)x.size()
#ifdef LOCAL
#include <debug_print.hpp>
#define debug(...) debug_print::multi_print(#__VA_ARGS__, __VA_ARGS__)
#else
#define debug(...) (static_cast<void>(0))
#endif
using ll = long long;
using l3 = __int128_t;
using ull = unsigned long long;
using ld = long double;
using P = pair<ll, ll>;
using T = tuple<ll, ll, ll>;
using vll = vector<ll>;
using vvll = vector<vll>;
using vvvll = vector<vvll>;
using vvvvll = vector<vvvll>;
using vP = vector<P>;
using vvP = vector<vector<P>>;
using vT = vector<T>;
using vvT = vector<vT>;
using vD = vector<ld>;
using vvD = vector<vD>;
using vvvD = vector<vvD>;
using dqll = deque<ll>;
ll dx[9] = {-1, 1, 0, 0, -1, -1, 1, 1, 0};
ll dy[9] = {0, 0, -1, 1, -1, 1, -1, 1, 0};
template <class T>
inline bool chmax(T &a, T b)
{
if (a < b)
{
a = b;
return 1;
}
return 0;
}
template <class T>
inline bool chmin(T &a, T b)
{
if (a > b)
{
a = b;
return 1;
}
return 0;
}
constexpr ll INF = (1LL << 60);
//constexpr ld eps = 1E-10;
constexpr ll mod = 1000000007;
//constexpr ll mod = 998244353;
//ll mod;
ll xadd(ll a, ll b) { return a+b; }
ll xmax(ll a, ll b) { return max(a, b); }
ll xmin(ll a, ll b) { return min(a, b); }
ll xinf() { return INF; }
ll xminf() { return -INF; }
ll xzero() { return 0LL; }
struct mint
{
ll x; // typedef long long ll;
mint(ll x = 0) : x((x % mod + mod) % mod) {}
mint operator-() const { return mint(-x); }
mint &operator+=(const mint a)
{
if ((x += a.x) >= mod)
x -= mod;
return *this;
}
mint &operator-=(const mint a)
{
if ((x += mod - a.x) >= mod)
x -= mod;
return *this;
}
mint &operator*=(const mint a)
{
(x *= a.x) %= mod;
return *this;
}
mint operator+(const mint a) const { return mint(*this) += a; }
mint operator-(const mint a) const { return mint(*this) -= a; }
mint operator*(const mint a) const { return mint(*this) *= a; }
mint pow(ll t) const
{
if (!t)
return 1;
mint a = pow(t >> 1);
a *= a;
if (t & 1)
a *= *this;
return a;
}
// for prime mod
mint inv() const { return pow(mod - 2); }
mint &operator/=(const mint a) { return *this *= a.inv(); }
mint operator/(const mint a) const { return mint(*this) /= a; }
};
istream &operator>>(istream &is, mint &a) { return is >> a.x; }
ostream &operator<<(ostream &os, const mint &a) { return os << a.x; }
class modutils
{
vector<mint> fact, invfact;
public:
modutils(int n = 200005) : fact(n + 1), invfact(n + 1)
{
fact[0] = 1;
for (int i = 1; i <= n; i++)
fact[i] = fact[i - 1] * i;
invfact[n] = fact[n].inv();
for (int i = n; i >= 1; i--)
invfact[i - 1] = invfact[i] * i;
}
mint pow(mint x, ll n) { return x.pow(n); }
mint comb(ll n, ll k)
{
if (n < 0 || k < 0 || n < k)
return 0;
return fact[n] * invfact[k] * invfact[n - k];
}
mint perm(ll n, ll k)
{
if (n < 0 || k < 0 || n < k)
return 0;
return fact[n] * invfact[n - k];
}
mint hom(ll n, ll k) { return comb(n + k - 1, k); }
mint fac(ll n) { return fact[n]; }
mint invfac(ll n) { return invfact[n]; }
};
using vm = vector<mint>;
using vvm = vector<vm>;
using vvvm = vector<vvm>;
template<class T> T cdv(const T &a, const T &b){
if(a%b==0){return a/b;}
if(a>=0){return (a/b)+1;}
else{return -((-a)/b);}
}
template<class T> T fdv(const T &a, const T &b){
if(a%b==0){return a/b;}
if(a>=0){return (a/b);}
else{return -((-a)/b)-1;}
}
ld ld_dist(ld x, ld y, ld a, ld b){
return sqrt((x-a)*(x-a)+(y-b)*(y-b));
}
ll mymod(ll a, ll b) { return (a%b+b)%b; }
int main(){
cout << fixed << setprecision(15);
ll n;
cin >> n;
vll as(n), bs(n);
ll s = 0;
rep(i, n){
cin >> as[i] >> bs[i];
s += bs[i];
}
if(s%3!=0){
cout << -1 << endl;
return 0;
}
ll M = s/3;
vvvll dp(n+1, vvll(M+1, vll(M+1, INF)));
dp[0][0][0] = 0;
rep(i, n){
rep(j, M+1) rep(k, M+1) if(dp[i][j][k]!=INF) {
ll now = dp[i][j][k];
// 1
ll nj = j + bs[i];
ll ad = as[i]!=1;
if(nj <= M) chmin(dp[i+1][nj][k], now+ad);
// 2
ll nk = k + bs[i];
ad = as[i]!=2;
if(nk <= M) chmin(dp[i+1][j][nk], now+ad);
// 3
ad = as[i]!=3;
chmin(dp[i+1][j][k], now+ad);
}
}
ll ans = dp[n][M][M];
if(ans==INF) ans = -1;
cout << ans << endl;
return 0;
}
提出情報
| 提出日時 |
|
| 問題 |
E - 3 Team Division |
| ユーザ |
kiyu |
| 言語 |
C++ 20 (gcc 12.2) |
| 得点 |
450 |
| コード長 |
5739 Byte |
| 結果 |
AC |
| 実行時間 |
161 ms |
| メモリ |
204900 KiB |
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
450 / 450 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
sample00.txt, sample01.txt, sample02.txt, sample03.txt |
| All |
sample00.txt, sample01.txt, sample02.txt, sample03.txt, testcase00.txt, testcase01.txt, testcase02.txt, testcase03.txt, testcase04.txt, testcase05.txt, testcase06.txt, testcase07.txt, testcase08.txt, testcase09.txt, testcase10.txt, testcase11.txt, testcase12.txt, testcase13.txt, testcase14.txt, testcase15.txt, testcase16.txt, testcase17.txt, testcase18.txt, testcase19.txt, testcase20.txt, testcase21.txt, testcase22.txt, testcase23.txt, testcase24.txt, testcase25.txt, testcase26.txt, testcase27.txt, testcase28.txt, testcase29.txt, testcase30.txt, testcase31.txt, testcase32.txt, testcase33.txt, testcase34.txt, testcase35.txt, testcase36.txt, testcase37.txt, testcase38.txt, testcase39.txt, testcase40.txt, testcase41.txt, testcase42.txt, testcase43.txt, testcase44.txt, testcase45.txt, testcase46.txt, testcase47.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| sample00.txt |
AC |
1 ms |
3548 KiB |
| sample01.txt |
AC |
1 ms |
3444 KiB |
| sample02.txt |
AC |
1 ms |
3412 KiB |
| sample03.txt |
AC |
1 ms |
3520 KiB |
| testcase00.txt |
AC |
104 ms |
161244 KiB |
| testcase01.txt |
AC |
131 ms |
204900 KiB |
| testcase02.txt |
AC |
87 ms |
137544 KiB |
| testcase03.txt |
AC |
39 ms |
64112 KiB |
| testcase04.txt |
AC |
90 ms |
135716 KiB |
| testcase05.txt |
AC |
135 ms |
204864 KiB |
| testcase06.txt |
AC |
34 ms |
53764 KiB |
| testcase07.txt |
AC |
68 ms |
100088 KiB |
| testcase08.txt |
AC |
96 ms |
139616 KiB |
| testcase09.txt |
AC |
138 ms |
204800 KiB |
| testcase10.txt |
AC |
79 ms |
122052 KiB |
| testcase11.txt |
AC |
102 ms |
160512 KiB |
| testcase12.txt |
AC |
143 ms |
197008 KiB |
| testcase13.txt |
AC |
126 ms |
204800 KiB |
| testcase14.txt |
AC |
28 ms |
41732 KiB |
| testcase15.txt |
AC |
61 ms |
89440 KiB |
| testcase16.txt |
AC |
49 ms |
109768 KiB |
| testcase17.txt |
AC |
109 ms |
204684 KiB |
| testcase18.txt |
AC |
112 ms |
191624 KiB |
| testcase19.txt |
AC |
58 ms |
119800 KiB |
| testcase20.txt |
AC |
119 ms |
186824 KiB |
| testcase21.txt |
AC |
138 ms |
204868 KiB |
| testcase22.txt |
AC |
35 ms |
65508 KiB |
| testcase23.txt |
AC |
76 ms |
116244 KiB |
| testcase24.txt |
AC |
116 ms |
184884 KiB |
| testcase25.txt |
AC |
161 ms |
204868 KiB |
| testcase26.txt |
AC |
110 ms |
145728 KiB |
| testcase27.txt |
AC |
146 ms |
201204 KiB |
| testcase28.txt |
AC |
136 ms |
194856 KiB |
| testcase29.txt |
AC |
131 ms |
204864 KiB |
| testcase30.txt |
AC |
56 ms |
75308 KiB |
| testcase31.txt |
AC |
69 ms |
103224 KiB |
| testcase32.txt |
AC |
1 ms |
4180 KiB |
| testcase33.txt |
AC |
8 ms |
17692 KiB |
| testcase34.txt |
AC |
36 ms |
64972 KiB |
| testcase35.txt |
AC |
55 ms |
116364 KiB |
| testcase36.txt |
AC |
14 ms |
21552 KiB |
| testcase37.txt |
AC |
1 ms |
3484 KiB |
| testcase38.txt |
AC |
7 ms |
11768 KiB |
| testcase39.txt |
AC |
1 ms |
3548 KiB |
| testcase40.txt |
AC |
1 ms |
3444 KiB |
| testcase41.txt |
AC |
39 ms |
62268 KiB |
| testcase42.txt |
AC |
1 ms |
3516 KiB |
| testcase43.txt |
AC |
1 ms |
3672 KiB |
| testcase44.txt |
AC |
13 ms |
22968 KiB |
| testcase45.txt |
AC |
36 ms |
58112 KiB |
| testcase46.txt |
AC |
1 ms |
3544 KiB |
| testcase47.txt |
AC |
1 ms |
3420 KiB |