Submission #1257349

#TimeUsernameProblemLanguageResultExecution timeMemory
12573493m17Drvca (COCI19_drvca)C++20
0 / 110
121 ms13856 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
const int Nmax = 1e5 + 10;

int n;
int a[Nmax];

multiset <int> st;
vector <int> v;
map <int , int> mp;

void check(int start, int d)
{
    int now = start;
    for (int i = 1; i <= n; i++)
        st.insert(a[i]);

    multiset<int>::iterator it2 = st.begin();
    ++it2;
    for (; it2 != st.end(); it2++)
    {
        int diff = *it2 - *prev(it2);
        mp[diff]++;
    }

    while (st.find(now) != st.end())
    {
        v.push_back(now);
        multiset<int>::iterator it = st.find(now);
        now += d;

        if (it != st.begin())
        {
            int diff = *it - *prev(it);
            mp[diff]--;
            if (mp[diff] == 0) mp.erase(diff);
        }
        if (it != --st.end())
        {
            int diff = *next(it) - *it;
            mp[diff]--;
            if (mp[diff] == 0) mp.erase(diff);
        }
        if (it != st.begin() && it != --st.end())
        {
            int diff = *next(it) - *prev(it);
            mp[diff]++;
        }

        st.erase(it);

        if (mp.size() == 1)
        {
            if (st.empty())
            {
                st.insert(v.back());
                v.pop_back();
            }
            cout << v.size() << '\n';
            for (int i = 0 ; i < (int)v.size() ; i++)
                cout << v[i] << ' ';
            cout << '\n';

            cout << st.size() << '\n';
            for (multiset<int>::iterator it3 = st.begin() ; it3 != st.end() ; it3++)
                cout << *it3 << ' ';
            cout << '\n';

            break;
        }
    }
}

main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

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

    sort(a + 1 , a + n + 1);

    if (n <= 2)
    {
        cout << 1 << '\n' << a[1] << '\n';
        cout << 1 << '\n' << a[2] << '\n';
        return 0;
    }

    check(a[1], a[2] - a[1]);
    check(a[1], a[3] - a[1]);
    check(a[2], a[3] - a[2]);

    cout << -1;
}

Compilation message (stderr)

drvca.cpp:76:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   76 | main()
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...