답안 #516332

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
516332 2022-01-21T06:29:46 Z fcmalkcin Gift (IZhO18_nicegift) C++17
30 / 100
404 ms 318668 KB
/*#pragma GCC optimize("Ofast")
#pragma GCC optimization("unroll-loops, no-stack-protector")
#pragma GCC target("avx,avx2,fma")*/

#include <bits/stdc++.h>
using namespace std;

#define ll  long long
#define pll pair<ll,ll>
#define ff first
#define ss second
#define pb push_back
#define endl "\n"
#define F(i,a,b) for (ll i=a;i<=b;i++)

mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());

const ll maxn=4e6+40;
const ll mod=1000003 ;
const ll base=3e18;

/// you will be the best but now you just are trash
/// goal 2/7

ll n, k;
pll a[maxn];
vector<pll> gr[maxn];

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    if (fopen("CHOCOLATE.inp", "r"))
    {
        freopen("CHOCOLATE.inp", "r", stdin);
        freopen("CHOCOLATE.out", "w", stdout);
    }
    ll n, k;
    cin>> n>> k;
    ll cnt=0;
    for (int i=1;i<=n;i++)
    {
        cin>> a[i].ff;
        cnt+=a[i].ff;
        a[i].ss=i;
    }
    sort(a+1,a+n+1);
    if (cnt%k!=0)
    {
        cout <<-1;
        return 0;
    }
    if (a[n].ff>(cnt/k))
    {
        cout <<-1;
        return 0;
    }
    cnt/=k;
    pll pre=make_pair(0,0);
    ll dem=0;
    for (int i=1;i<=n;i++)
    {
        dem++;
        ll j=i;
        ll nw=a[i].ff+pre.ff;
       if(pre.ss) gr[dem].pb(pre);
       gr[dem].pb(a[i]);
        while (nw<cnt)
        {
            j++,nw+=a[j].ff;
            if (nw<=cnt) gr[dem].pb(a[j]);
            else gr[dem].pb(make_pair(a[j].ff-(nw-cnt),a[j].ss));
        }
   //     assert(nw>=cnt);
        if (nw>cnt)
        {
          //  assert(a[j].ff>nw-cnt);
            pre=make_pair(nw-cnt,a[j].ss);
        }
        i=j;
    }
    assert(dem==k);
   /* for (int i=1;i<=k;i++)
    {
        for (auto to:gr[i]) cout <<to.ff<<" "<<to.ss<<" ";
        cout <<endl;
    }*/
    vector<pair<ll,vector<ll>>> ans;
    while (1)
    {
        bool kt=true;
        ll val1=base;
        for (int i=1;i<=k;i++)
        {
            if (!gr[i].size())
            {
                kt=false;
                break;
            }
            else
            {
                val1=min(val1,gr[i].back().ff);
            }
        }
        if (kt)
        {
       //     assert(val1);
            vector<ll> vt;
            for (int i=1;i<=k;i++)
            {
                if (gr[i].back().ff==val1)
                {
                    vt.pb(gr[i].back().ss);
                    gr[i].pop_back();
                }
                else
                {
                    gr[i][gr[i].size()-1].ff-=val1;
                    vt.pb(gr[i].back().ss);
                }
            }
            ans.pb(make_pair(val1,vt));
        }
        else
        {
            break;
        }
    }
    cout <<ans.size()<<endl;
    for (auto to:ans)
    {
        cout <<to.ff<<" ";
        for (auto p:to.ss) cout <<p<<" ";
        cout <<endl;
    }

}

Compilation message

nicegift.cpp: In function 'int main()':
nicegift.cpp:36:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   36 |         freopen("CHOCOLATE.inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
nicegift.cpp:37:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 |         freopen("CHOCOLATE.out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 46 ms 94140 KB n=4
2 Correct 48 ms 94228 KB n=3
3 Correct 48 ms 94120 KB n=3
4 Correct 50 ms 94120 KB n=4
5 Correct 50 ms 94148 KB n=4
6 Correct 46 ms 94148 KB n=2
# 결과 실행 시간 메모리 Grader output
1 Correct 46 ms 94140 KB n=4
2 Correct 48 ms 94228 KB n=3
3 Correct 48 ms 94120 KB n=3
4 Correct 50 ms 94120 KB n=4
5 Correct 50 ms 94148 KB n=4
6 Correct 46 ms 94148 KB n=2
7 Correct 47 ms 94148 KB n=5
8 Correct 51 ms 94128 KB n=8
9 Correct 56 ms 94244 KB n=14
10 Correct 48 ms 94240 KB n=11
11 Correct 95 ms 99604 KB n=50000
12 Correct 74 ms 99652 KB n=50000
13 Correct 48 ms 94172 KB n=10
14 Correct 54 ms 94396 KB n=685
15 Correct 53 ms 94296 KB n=623
16 Correct 49 ms 94372 KB n=973
# 결과 실행 시간 메모리 Grader output
1 Correct 46 ms 94140 KB n=4
2 Correct 48 ms 94228 KB n=3
3 Correct 48 ms 94120 KB n=3
4 Correct 50 ms 94120 KB n=4
5 Correct 50 ms 94148 KB n=4
6 Correct 46 ms 94148 KB n=2
7 Correct 47 ms 94148 KB n=5
8 Correct 51 ms 94128 KB n=8
9 Correct 56 ms 94244 KB n=14
10 Correct 48 ms 94240 KB n=11
11 Correct 95 ms 99604 KB n=50000
12 Correct 74 ms 99652 KB n=50000
13 Correct 48 ms 94172 KB n=10
14 Correct 54 ms 94396 KB n=685
15 Correct 53 ms 94296 KB n=623
16 Correct 49 ms 94372 KB n=973
17 Correct 53 ms 94276 KB n=989
18 Correct 49 ms 94276 KB n=563
19 Correct 51 ms 94456 KB n=592
20 Correct 49 ms 94432 KB n=938
21 Correct 49 ms 94288 KB n=747
22 Correct 56 ms 94436 KB n=991
# 결과 실행 시간 메모리 Grader output
1 Correct 404 ms 171340 KB n=1000000
2 Correct 259 ms 136936 KB n=666666
3 Correct 163 ms 116968 KB n=400000
4 Correct 332 ms 147308 KB n=285714
5 Correct 54 ms 95248 KB n=20000
6 Correct 291 ms 138064 KB n=181818
7 Correct 55 ms 94660 KB n=10000
8 Runtime error 232 ms 318668 KB Execution killed with signal 6
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 46 ms 94140 KB n=4
2 Correct 48 ms 94228 KB n=3
3 Correct 48 ms 94120 KB n=3
4 Correct 50 ms 94120 KB n=4
5 Correct 50 ms 94148 KB n=4
6 Correct 46 ms 94148 KB n=2
7 Correct 47 ms 94148 KB n=5
8 Correct 51 ms 94128 KB n=8
9 Correct 56 ms 94244 KB n=14
10 Correct 48 ms 94240 KB n=11
11 Correct 95 ms 99604 KB n=50000
12 Correct 74 ms 99652 KB n=50000
13 Correct 48 ms 94172 KB n=10
14 Correct 54 ms 94396 KB n=685
15 Correct 53 ms 94296 KB n=623
16 Correct 49 ms 94372 KB n=973
17 Correct 53 ms 94276 KB n=989
18 Correct 49 ms 94276 KB n=563
19 Correct 51 ms 94456 KB n=592
20 Correct 49 ms 94432 KB n=938
21 Correct 49 ms 94288 KB n=747
22 Correct 56 ms 94436 KB n=991
23 Correct 404 ms 171340 KB n=1000000
24 Correct 259 ms 136936 KB n=666666
25 Correct 163 ms 116968 KB n=400000
26 Correct 332 ms 147308 KB n=285714
27 Correct 54 ms 95248 KB n=20000
28 Correct 291 ms 138064 KB n=181818
29 Correct 55 ms 94660 KB n=10000
30 Runtime error 232 ms 318668 KB Execution killed with signal 6
31 Halted 0 ms 0 KB -