제출 #1257365

#제출 시각아이디문제언어결과실행 시간메모리
1257365knhatdevDrvca (COCI19_drvca)C++20
0 / 110
28 ms3136 KiB
#include<bits/stdc++.h>
#define int long long
#define ii pair<int,int>
#define fi first
#define se second
#define task "noel"
using namespace std;

const int N = 1e6 + 5, mod = 1e9 + 7;
int n, a[N];

void check1()
{
    int d = a[2] - a[1];
    vector<int> v, v2;
    v.push_back(a[1]);
    for(int i = 2; i <= n; i++)
    {
        if(a[i] - v.back() == d)
        {
            v.push_back(a[i]);
        }
        else
        {
            v2.push_back(a[i]);
        }
    }
    if(v2.size() == 0)
    {
        cout << v.size() - 1 << '\n';
        for(int i = 0; i < v.size() - 1; i++)
            cout << v[i] << ' ';
        cout << '\n';
        cout << 1 << '\n';
        cout << v.back();
        exit(0);
    }
    if(v2.size() >= 2)
    {
        for(int i = 1; i < v2.size(); i++)
            if(v2[i] - v2[i - 1] != v2[1] - v2[0]) return;
    }
    cout << v.size() << '\n';
    for(int x : v) cout << x << ' ';
    cout << '\n' << v2.size() << '\n';
    for(int x : v2) cout << x << ' ';
    exit(0);
}

void check2()
{
    int d = a[3] - a[1];
    vector<int> v, v2;
    v.push_back(a[1]);
    for(int i = 2; i <= n; i++)
    {
        if(a[i] - v.back() == d)
        {
            v.push_back(a[i]);
        }
        else
        {
            v2.push_back(a[i]);
        }
    }
    if(v2.size() == 0)
    {
        cout << v.size() - 1 << '\n';
        for(int i = 0; i < v.size() - 1; i++)
            cout << v[i] << ' ';
        cout << '\n';
        cout << 1 << '\n';
        cout << v.back();
        exit(0);
    }
    if(v2.size() >= 2)
    {
        for(int i = 1; i < v2.size(); i++)
            if(v2[i] - v2[i - 1] != v2[1] - v2[0]) return;
    }
    cout << v.size() << '\n';
    for(int x : v) cout << x << ' ';
    cout << '\n' << v2.size() << '\n';
    for(int x : v2) cout << x << ' ';
    exit(0);
}
main(){
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    if(fopen(task ".inp", "r")){
        freopen(task ".inp", "r", stdin);
        freopen(task ".out", "w", stdout);
    }
    cin >> n;
    for(int i = 1; i <= n; i++)
        cin >> a[i];
    sort(a + 1, a + 1 + n);
    if(n == 2)
    {
        cout << 1 << '\n' << a[1] << '\n' << 1 << '\n' << a[2];
        exit(0);
    }
    if(n <= 4)
    {
        cout << 2 << '\n';
        for(int i = 1; i <= 2; i++)
            cout << a[i] << ' ';
        cout << '\n';
        cout << n - 2 << '\n';
        for(int i = 3; i <= n; i++)
            cout << a[i] << ' ';
        exit(0);
    }
    check1();
    check2();
    cout << -1 << '\n';
}

컴파일 시 표준 에러 (stderr) 메시지

drvca.cpp:87:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   87 | main(){
      | ^~~~
drvca.cpp: In function 'int main()':
drvca.cpp:90:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   90 |         freopen(task ".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
drvca.cpp:91:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   91 |         freopen(task ".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...