Submission #58713842


Source Code Expand

#include <iostream>
#include <algorithm>
#include <string>
#include <cmath>
#include <iomanip>
#include <map>
#include <stack>
#include <vector>
#include <queue>
#include <deque>
#include <set>
#include <bitset>
#include <atcoder/all>
#define rep(i,a,b) for(ll i=a;i<b;++i)
#define rrep(i,a,b) for(ll i=a;i>=b;--i)
#define fore(i, a) for(auto& i : a)
#define PI 3.141592653589793238
using namespace atcoder;
using namespace std;
using mint=modint998244353;
typedef int ll;
typedef pair<ll,ll> pp;
typedef vector<ll> vl;
typedef vector<ulong> vu;
typedef vector<vl> vvl;
typedef vector<pp> vp;
typedef vector<vp> vvp;
typedef priority_queue<pp, vp, greater<pp> > pq;
typedef vector<mint> vm;
typedef vector<vm> vvm;
vm kaijou;
void kaijou_set() {kaijou.push_back(1); rep(i, 1, 2000009)kaijou.push_back(kaijou[i-1] * i); return;}
mint C(ll a, ll b) {if(a < b || b < 0) return 0; return kaijou[a] / (kaijou[b-a] * kaijou[b]);}
template <typename T, typename F>
T bisect(T ok, T bad, F pred) {if(!pred(ok))return ok; while (bad - ok > 1) {T mid = ok + (bad - ok) / 2; (pred(mid) ? ok : bad) = mid;} return bad;}
bool chmin(ll &a, ll b) {if (a > b) {a = b;return true;} return false;}
bool chmax(ll &a, ll b) {if (a < b) {a = b;return true;} return false;}
void YESNO(bool b) { cout << (b ? "YES" : "NO") << endl; }
void YesNo(bool b) { cout << (b ? "Yes" : "No") << endl; }
ll gcd(ll x, ll y) {if(y == 0)return x; return gcd(y, x % y); }
ll RU(double a) {ll b = a; return(b == a ? b : b + 1);}
const ll mod=998244353; const ll mof=1000000007;



int main() 
{
    ll n;
    cin>>n;
    ll a[109],b[109];
    ll sum=0;
    rep(i,1,n+1){
        cin>>a[i]>>b[i];
        sum+=b[i];
    }
    if(sum%3>=1){
        cout<<-1<<endl;
        return 0;
    }
    ll ave=sum/3;
    ll dp[109][1509][1509];//i人目まで見て、チーム1の強さがj、チーム2の強さがkであるときの最小移動回数

    rep(i,0,109)rep(j,0,1509)rep(k,0,1509)dp[i][j][k]=1e9;
    dp[0][0][0]=0;

    rep(i,1,n+1){
        rep(j,0,1509){
            rep(k,0,1509){
                //iをチーム1に置く
                if(j-b[i]>=0){
                    ll dpkari=dp[i-1][j-b[i]][k];
                    if(a[i]!=1)++dpkari;
                    chmin(dp[i][j][k],dpkari);
                }

                //iをチーム2に置く
                if(k-b[i]>=0){
                    ll dpkari=dp[i-1][j][k-b[i]];
                    if(a[i]!=2)++dpkari;
                    chmin(dp[i][j][k],dpkari);
                }

                //iをチーム3に置く
                ll dpkari=dp[i-1][j][k];
                if(a[i]!=3)++dpkari;
                chmin(dp[i][j][k],dpkari);
            }
        }
    }

    if(dp[n][ave][ave]==1e9)cout<<-1<<endl;
    else cout<<dp[n][ave][ave]<<endl;
}

Submission Info

Submission Time
Task E - 3 Team Division
User yamadanull
Language C++ 20 (gcc 12.2)
Score 450
Code Size 2882 Byte
Status AC
Exec Time 850 ms
Memory 973228 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 450 / 450
Status
AC × 4
AC × 52
Set Name Test Cases
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
Case Name Status Exec Time Memory
sample00.txt AC 455 ms 973084 KiB
sample01.txt AC 332 ms 973032 KiB
sample02.txt AC 445 ms 973168 KiB
sample03.txt AC 478 ms 973036 KiB
testcase00.txt AC 723 ms 973076 KiB
testcase01.txt AC 822 ms 973084 KiB
testcase02.txt AC 787 ms 973036 KiB
testcase03.txt AC 800 ms 973068 KiB
testcase04.txt AC 682 ms 973016 KiB
testcase05.txt AC 818 ms 973036 KiB
testcase06.txt AC 679 ms 973080 KiB
testcase07.txt AC 809 ms 973104 KiB
testcase08.txt AC 692 ms 972952 KiB
testcase09.txt AC 816 ms 973016 KiB
testcase10.txt AC 737 ms 973040 KiB
testcase11.txt AC 814 ms 973024 KiB
testcase12.txt AC 816 ms 973072 KiB
testcase13.txt AC 819 ms 973072 KiB
testcase14.txt AC 637 ms 973020 KiB
testcase15.txt AC 821 ms 973028 KiB
testcase16.txt AC 620 ms 973224 KiB
testcase17.txt AC 808 ms 973072 KiB
testcase18.txt AC 795 ms 973024 KiB
testcase19.txt AC 806 ms 973024 KiB
testcase20.txt AC 776 ms 973040 KiB
testcase21.txt AC 824 ms 973228 KiB
testcase22.txt AC 693 ms 973020 KiB
testcase23.txt AC 813 ms 973072 KiB
testcase24.txt AC 793 ms 972952 KiB
testcase25.txt AC 837 ms 973228 KiB
testcase26.txt AC 766 ms 973148 KiB
testcase27.txt AC 850 ms 973168 KiB
testcase28.txt AC 820 ms 973040 KiB
testcase29.txt AC 835 ms 973076 KiB
testcase30.txt AC 818 ms 973032 KiB
testcase31.txt AC 815 ms 973108 KiB
testcase32.txt AC 797 ms 973032 KiB
testcase33.txt AC 795 ms 973072 KiB
testcase34.txt AC 795 ms 973228 KiB
testcase35.txt AC 783 ms 973032 KiB
testcase36.txt AC 680 ms 973024 KiB
testcase37.txt AC 332 ms 973064 KiB
testcase38.txt AC 635 ms 973144 KiB
testcase39.txt AC 331 ms 973032 KiB
testcase40.txt AC 331 ms 973020 KiB
testcase41.txt AC 785 ms 973040 KiB
testcase42.txt AC 332 ms 973032 KiB
testcase43.txt AC 331 ms 972996 KiB
testcase44.txt AC 675 ms 973016 KiB
testcase45.txt AC 823 ms 972952 KiB
testcase46.txt AC 331 ms 973164 KiB
testcase47.txt AC 332 ms 973104 KiB