제출 #1340130

#제출 시각아이디문제언어결과실행 시간메모리
1340130bshaliKrugomet (COCI25_krugomet)C++20
14 / 70
1095 ms1608 KiB
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define ld long double
#define all(x) begin(x), end(x)
#define inf (int)3e18
#define ff first
#define ss second
#define mem(x, y) fill(begin(x), end(x), y)
using vi = vector<int>;
using vii = vector<pair<int, int>>;
using vvi = vector<vector<int>>;
using pii = pair<int, int>;

mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());

const int MAX = 1e5 + 5, MOD = 1e9 + 7;

int n, k, a[MAX], s[MAX];

void solve()
{
    cin >> n >> k;

    for (int i = 1; i <= n; i++)
        cin >> a[i];
    for (int i = 1; i <= n; i++)
        cin >> s[i];

    while (k--)
    {
        vi b(n + 1, 0);

        for (int i = 1; i <= n; i++)
        {
            b[s[i]] += a[i];
        }

        for (int i = 1; i <= n; i++)
            a[i] = b[i];
    }

    vii ans = {{-1, -1}};
    for (int i = 1; i <= n; i++)
    {
        if (ans.back().ff < a[i])
        {
            ans.clear();
            ans.push_back({a[i], i});
        }
        else if (ans.back().ff == a[i])
        {
            ans.push_back({a[i], i});
        }
    }

    for (auto i : ans)
        cout << i.ff << ' ';
    cout << endl;
    for (auto i : ans)
        cout << i.ss << ' ';
}

signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);

    int tt = 1;
    // cin >> tt;
    while (tt--)
        solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...