1~100개 사이의 증가하는 수열이 주어지는데 여기서 몇개를 지우려고 한다. 그런데 조건이 있다.


연속적으로 지워야 하고 반드시 복구가 가능해야 한다.


예를들어 2 3 4 5 6 10 이런 배열이 있다면 3,4,5를 지울 수 있다는 이야기이다.


지운 결과가 2 _ _ _ 6 10 이렇게 남아있다면 손쉽게 3,4,5를 바로 복구할 수 있다.


배열이 주어졌을 때 가장 많이 원소를 지웠을 때 몇개를 지웠는지 출력해야 한다.


a[0] = 0, a[++n] = 1001로 두고 차가 1인 증가수열의 최대 길이를 구하면 된다.


#include <iostream>
#include <algorithm>
using namespace std;
 
int n, a[103];
 
int main() {
    ios::sync_with_stdio(false); cin.tie(0);
    cin >> n;
    a[0= 0;
    for (int i = 1; i <= n; ++i)
        cin >> a[i];
    a[++n] = 1001;
    int cnt = 1, ans = 0;
    for (int i = 1; i <= n; ++i) {
        if (a[i] == a[i - 1+ 1) cnt++;
        else cnt = 1;
        ans = max(ans, cnt);
    }
    cout << max(ans - 20);
    return 0;
}
cs


'codeforces > #520 div2' 카테고리의 다른 글

D. Fun with Integers  (0) 2018.11.17
C. Banh-mi  (0) 2018.11.17
B. Math  (0) 2018.11.17

+ Recent posts