Submission #14452

#TimeUsernameProblemLanguageResultExecution timeMemory
14452yys980정전 (OJUZ10_blackout)C++98
50 / 100
54 ms8112 KiB
#include <stdio.h>
#include <algorithm>

using namespace std;
int n,l,sum;
int slight[300000],elight[300000];
int group[300000][2],gcnt;
int allight[300000][2],acnt;
int main()
{
    scanf("%d %d",&n, &l);
    int i,j;
    for(i = 1 ; i <= n ; i++){
        scanf("%d",&slight[i]);
        slight[i]-=l;
    }
    sort(slight+1,slight+1+n);
    for(i = 1 ; i <= n ; i++)elight[i]=slight[i]+l*2;
    group[gcnt][0]=1;
    for(i = 1 ; i <= n ; i++){
        if(elight[i]<=slight[i+1] || i==n){
            group[gcnt][1]=i;
            group[++gcnt][0]=i+1;
        }
    }
    for(i = 0 ; i < gcnt ; i++){
        for(j = group[i][0] ; j <= group[i][1] ; j++){
            if(j+1 > group[i][1])continue;
            allight[acnt][0]=slight[j+1];
            allight[acnt][1]=elight[j];
            if(acnt>=1 && allight[acnt][0]<allight[acnt-1][1]){
                allight[acnt-1][1]=allight[acnt][1];
                allight[acnt][0]=allight[acnt][1]=0;
            }
            else acnt++;
        }
    }
    for(i = 0 ; i < acnt ; i++){
        sum+=(allight[i][1]-allight[i][0]);
    }
    printf("%d",sum);
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...