답안 #1112659

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1112659 2024-11-14T14:05:30 Z vjudge1 Gift (IZhO18_nicegift) C++17
0 / 100
2000 ms 524288 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;
    while (1) {
        vi vv;
        auto itt = ms.begin();
        int ctr = 0;
        for (;ctr != k;++itt) {
            vv.push_back(itt->ss);
            ctr++;
        }
        if (ms.size() == k) {
            if (ms.begin()->ff != ms.rbegin()->ff) {
                cout << -1 << '\n';
                return;
            }
            ops.push_back({ms.begin()->ff,vv});
            break;
        }
        int subt = (ms.begin()->ff-next(ms.begin(),k)->ff);
        for (auto it : vv) {
            ms.erase({a[it],it});
            if (a[it]-subt > 0) ms.insert({a[it]-subt,it});
            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 << endl;
    }
}  
 
                
                            
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:41: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]
   41 |         if (ms.size() == k) {
      |             ~~~~~~~~~~^~~~
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1626 ms 524288 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1626 ms 524288 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1626 ms 524288 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 2066 ms 274740 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1626 ms 524288 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -