2017년 2월 26일 일요일

1337 올바른 배열

배열 사이에서 연속적인(차이가 1) 원소가 5개가 되기 위해서 몇개의 숫자가 필요한가? 를 묻는 문제였다


슬라이딩윈도우? 처럼 풀었더니 쉽게 풀리는 문제!



#include <bits/stdc++.h>
using namespace std;
#define INF 987654321
#define P make_pair
typedef long long LL;
 
int arr[10001];
 
int main(){
    
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%d",&arr[i]);
    
    sort(arr,arr+n);
    
    int s=arr[0],e=arr[0],idx_s=0;
    
    int cnt=1,Max=1;
    
        
    for(int i=1;i<n;i++){
        
        cnt++;
        
        while(arr[i]-arr[idx_s]>4){
            idx_s++;
            cnt--;
        }
        
        Max=max(Max,cnt);
    }
    
    if(Max>5) Max=5;
    printf("%d",5-Max);
    
    return 0;
}
 
cs

댓글 없음:

댓글 쓰기