Skip to content

Instantly share code, notes, and snippets.

@wasabili
Created November 7, 2010 09:17
Show Gist options
  • Save wasabili/666015 to your computer and use it in GitHub Desktop.
Save wasabili/666015 to your computer and use it in GitHub Desktop.
つらら
#include<cstdio>
#include<cstring>
#include<algorithm>
#define max(x,y) ((x>y)?x:y)
#define N_MAX 100000
using namespace std;
int len[N_MAX];
int data[N_MAX];
main(){
int n,l;
scanf("%d%d",&n,&l);
for(int i=0;i<n;i++) scanf("%d",len+i);
if(len[0] > len[1]) data[0] = l - len[0];
if(len[n-2] < len[n-1]) data[n-1] = l - len[n-1];
for(int i=1;i<n-1;i++){
if(len[i] > len[i+1]){
if(len[i-1] < len[i]){
data[i] = l-len[i];
}else {
data[i] = data[i-1] + l - len[i];
}
}
}
for(int i=n-2;i>=1;i--){
if(len[i] < len[i+1]){
if(len[i-1] < len[i]){
data[i] = data[i+1] + l - len[i];
}else{
data[i] = max(data[i], data[i+1] + l - len[i]);
}
}
}
if(len[0] < len[1]) data[0] = data[1] + l - len[0];
if(len[n-2] > len[n-1]) data[n-1] = data[n-2] + l - len[n-1];
sort(data,data+n);
printf("%d\n", data[n-1]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment