Submission #981154

# Submission time Handle Problem Language Result Execution time Memory
981154 2024-05-12T23:57:50 Z math_rabbit_1028 Sequence (APIO23_sequence) C++17
7 / 100
168 ms 33700 KB
#include "sequence.h"

#include <bits/stdc++.h>
using namespace std;

int n, m, ans = 0;
vector<int> arr;
vector<int> pos[505050];

int sequence(int N, vector<int> A) {
    n = N;
    arr = A;
    sort(A.begin(), A.end());
    A.erase(unique(A.begin(), A.end()), A.end());
    m = A.size();
    for (int i = 0; i < n; i++) {
        arr[i] = lower_bound(A.begin(), A.end(), arr[i]) - A.begin();
    }

    for (int i = 0; i < n; i++) {
        pos[arr[i]].push_back(i);
    }
    
    for (int i = 0; i < m; i++) {
        int mn = pos[i].front(), mx = pos[i].back();
        if (mx - mn + 1 == pos[i].size()) {
            ans = max(ans, mx - mn + 1);
            continue;
        }
        int ed, st; //[mn, ed] + [st, mx]
        for (int j = 1; ; j++) {
            assert(pos[i].size() > j);
            if (pos[i][j] > pos[i][j-1] + 1) {
                ed = pos[i][j-1];
                st = pos[i][j];
                break;
            }
        }
        ans = max(ans, ed - mn + 1);
        ans = max(ans, mx - st + 1);
        if (mx - mn + 1 <= n/2 + 1) ans = max(ans, ed - mn + 1 + mx - st + 1);
    }

    return ans;
}

Compilation message

sequence.cpp: In function 'int sequence(int, std::vector<int>)':
sequence.cpp:26:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |         if (mx - mn + 1 == pos[i].size()) {
      |             ~~~~~~~~~~~~^~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from sequence.cpp:3:
sequence.cpp:32:34: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   32 |             assert(pos[i].size() > j);
      |                    ~~~~~~~~~~~~~~^~~
# Verdict Execution time Memory Grader output
1 Correct 3 ms 12124 KB Output is correct
2 Correct 3 ms 12124 KB Output is correct
3 Incorrect 3 ms 12124 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 12124 KB Output is correct
2 Correct 3 ms 12124 KB Output is correct
3 Incorrect 3 ms 12124 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 12124 KB Output is correct
2 Correct 111 ms 28060 KB Output is correct
3 Correct 110 ms 27984 KB Output is correct
4 Correct 47 ms 20440 KB Output is correct
5 Correct 108 ms 27040 KB Output is correct
6 Correct 104 ms 27120 KB Output is correct
7 Correct 46 ms 20564 KB Output is correct
8 Correct 46 ms 20608 KB Output is correct
9 Correct 51 ms 20968 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 12124 KB Output is correct
2 Incorrect 47 ms 21252 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 168 ms 33700 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 12124 KB Output is correct
2 Correct 3 ms 12124 KB Output is correct
3 Incorrect 3 ms 12124 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 12124 KB Output is correct
2 Correct 3 ms 12124 KB Output is correct
3 Incorrect 3 ms 12124 KB Output isn't correct
4 Halted 0 ms 0 KB -