Submission #1112683

# Submission time Handle Problem Language Result Execution time Memory
1112683 2024-11-14T14:54:20 Z dosts Gift (IZhO18_nicegift) C++17
100 / 100
1959 ms 118156 KB
//Dost SEFEROĞLU
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
#define ff first
#define ss second
#define sp << " " << 
#define vi vector<int>
#define all(xx) xx.begin(),xx.end()
#define ps(xxx) cout << (xxx) << endl;
const int N = 5e2+1,inf = 1e16,MOD = 1e9+7; 
 

void solve() { 
    int n,k;
    cin >> n >> k;
    int s = 0;
    set<pii,greater<pii>> ms;
    vi a(n+1);
    for (int i=1;i<=n;i++) {
        cin >> a[i];
        s+=a[i];
        ms.insert({a[i],i});
    }
    if (s%k != 0 || ms.rbegin()->ff > s/k) {
        cout << -1 << endl;
        return;
    } 
    vector<pair<int,vi>> ops;
    int sm = s/k;
    vi vv(k,0);
    while (!ms.empty()) {
        if (ms.size() == k) {
            if(ms.begin()->ff != ms.rbegin()->ff) {
                cout << -1 << endl;
                return;
            }
        }
        auto itt = ms.begin();
        int ctr = 0;
        for (;ctr != k;++itt) {
            vv[ctr] = (itt->ss);
            ctr++;
        }
        int knxt = next(ms.begin(),k-1)->ff;
        int subt = min(knxt,sm-((ms.size() > k) ? (next(ms.begin(),k)->ff) : 0ll));
        sm-=subt;
        for (auto it : vv) {
            ms.erase({a[it],it});
            if (a[it]-subt > 0) ms.insert({a[it]-subt,it});
            //else assert(a[it] == subt);
            a[it]-=subt;
        }
        ops.push_back({subt,vv});
    }
    cout << ops.size() << '\n';
    for (auto it : ops) {
        cout << it.ff << " ";
        for (auto itt : it.ss) cout << itt <<  " ";
        cout << '\n';
    }
}  
 
                
                            
signed main() { 
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    #ifdef Dodi
        freopen("in.txt","r",stdin);
        freopen("out.txt","w",stdout);
    #endif
    int t = 1;
    //cin >> t; 
    while (t --> 0) solve();
}

Compilation message

nicegift.cpp: In function 'void solve()':
nicegift.cpp:36:23: warning: comparison of integer expressions of different signedness: 'std::set<std::pair<long long int, long long int>, std::greater<std::pair<long long int, long long int> > >::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   36 |         if (ms.size() == k) {
      |             ~~~~~~~~~~^~~~
nicegift.cpp:49:44: warning: comparison of integer expressions of different signedness: 'std::set<std::pair<long long int, long long int>, std::greater<std::pair<long long int, long long int> > >::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   49 |         int subt = min(knxt,sm-((ms.size() > k) ? (next(ms.begin(),k)->ff) : 0ll));
      |                                  ~~~~~~~~~~^~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB n=4
2 Correct 1 ms 336 KB n=3
3 Correct 1 ms 508 KB n=3
4 Correct 1 ms 336 KB n=4
5 Correct 1 ms 336 KB n=4
6 Correct 1 ms 336 KB n=2
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB n=4
2 Correct 1 ms 336 KB n=3
3 Correct 1 ms 508 KB n=3
4 Correct 1 ms 336 KB n=4
5 Correct 1 ms 336 KB n=4
6 Correct 1 ms 336 KB n=2
7 Correct 1 ms 336 KB n=5
8 Correct 1 ms 336 KB n=8
9 Correct 1 ms 336 KB n=14
10 Correct 1 ms 336 KB n=11
11 Correct 23 ms 5316 KB n=50000
12 Correct 20 ms 5192 KB n=50000
13 Correct 1 ms 336 KB n=10
14 Correct 1 ms 336 KB n=685
15 Correct 1 ms 540 KB n=623
16 Correct 1 ms 336 KB n=973
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB n=4
2 Correct 1 ms 336 KB n=3
3 Correct 1 ms 508 KB n=3
4 Correct 1 ms 336 KB n=4
5 Correct 1 ms 336 KB n=4
6 Correct 1 ms 336 KB n=2
7 Correct 1 ms 336 KB n=5
8 Correct 1 ms 336 KB n=8
9 Correct 1 ms 336 KB n=14
10 Correct 1 ms 336 KB n=11
11 Correct 23 ms 5316 KB n=50000
12 Correct 20 ms 5192 KB n=50000
13 Correct 1 ms 336 KB n=10
14 Correct 1 ms 336 KB n=685
15 Correct 1 ms 540 KB n=623
16 Correct 1 ms 336 KB n=973
17 Correct 1 ms 336 KB n=989
18 Correct 1 ms 504 KB n=563
19 Correct 1 ms 336 KB n=592
20 Correct 1 ms 336 KB n=938
21 Correct 1 ms 336 KB n=747
22 Correct 1 ms 336 KB n=991
# Verdict Execution time Memory Grader output
1 Correct 563 ms 101148 KB n=1000000
2 Correct 374 ms 55112 KB n=666666
3 Correct 204 ms 32328 KB n=400000
4 Correct 129 ms 24504 KB n=285714
5 Correct 8 ms 1872 KB n=20000
6 Correct 77 ms 14676 KB n=181818
7 Correct 4 ms 1104 KB n=10000
8 Correct 3 ms 928 KB n=6666
9 Correct 2 ms 760 KB n=4000
10 Correct 4 ms 592 KB n=2857
11 Correct 1 ms 592 KB n=2000
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB n=4
2 Correct 1 ms 336 KB n=3
3 Correct 1 ms 508 KB n=3
4 Correct 1 ms 336 KB n=4
5 Correct 1 ms 336 KB n=4
6 Correct 1 ms 336 KB n=2
7 Correct 1 ms 336 KB n=5
8 Correct 1 ms 336 KB n=8
9 Correct 1 ms 336 KB n=14
10 Correct 1 ms 336 KB n=11
11 Correct 23 ms 5316 KB n=50000
12 Correct 20 ms 5192 KB n=50000
13 Correct 1 ms 336 KB n=10
14 Correct 1 ms 336 KB n=685
15 Correct 1 ms 540 KB n=623
16 Correct 1 ms 336 KB n=973
17 Correct 1 ms 336 KB n=989
18 Correct 1 ms 504 KB n=563
19 Correct 1 ms 336 KB n=592
20 Correct 1 ms 336 KB n=938
21 Correct 1 ms 336 KB n=747
22 Correct 1 ms 336 KB n=991
23 Correct 563 ms 101148 KB n=1000000
24 Correct 374 ms 55112 KB n=666666
25 Correct 204 ms 32328 KB n=400000
26 Correct 129 ms 24504 KB n=285714
27 Correct 8 ms 1872 KB n=20000
28 Correct 77 ms 14676 KB n=181818
29 Correct 4 ms 1104 KB n=10000
30 Correct 3 ms 928 KB n=6666
31 Correct 2 ms 760 KB n=4000
32 Correct 4 ms 592 KB n=2857
33 Correct 1 ms 592 KB n=2000
34 Correct 16 ms 3276 KB n=23514
35 Correct 22 ms 3276 KB n=23514
36 Correct 1 ms 592 KB n=940
37 Correct 1 ms 336 KB n=2
38 Correct 45 ms 8708 KB n=100000
39 Correct 50 ms 8748 KB n=100000
40 Correct 1 ms 336 KB n=10
41 Correct 1 ms 400 KB n=100
42 Correct 3 ms 592 KB n=1000
43 Correct 783 ms 109496 KB n=1000000
44 Correct 1959 ms 118156 KB n=1000000
45 Correct 1208 ms 70332 KB n=666666
46 Correct 639 ms 42868 KB n=400000
47 Correct 12 ms 1104 KB n=2336
48 Correct 645 ms 44168 KB n=285714
49 Correct 489 ms 41320 KB n=181818
50 Correct 35 ms 4680 KB n=40000
51 Correct 16 ms 2640 KB n=20000
52 Correct 10 ms 1616 KB n=10000
53 Correct 52 ms 4716 KB n=6666
54 Correct 5 ms 848 KB n=4000
55 Correct 199 ms 16436 KB n=2857
56 Correct 4 ms 572 KB n=2000