#include<iostream>
using namespace std;
//const int MAXn=201;
const int MAXN=10000001;
int b[MAXN];
int main(){
int n,N;
cin>>n>>N;
int sum=0;
for(int i=0;i<n;i++){
int ni;
cin>>ni;
b[ni]=i+1;
}
for(int i=0;i<N;i++){
if(b[i]==0)
b[i]=b[i-1];
}
for(int i=0;i<N;i++){
sum+=b[i];
}
cout<<sum;
return 0;
}
#include<stdio.h>
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int a[n];
int i,sum=0;
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
if(m>=a[n-1])
{
for(i=1; i<n; i++)
sum+=(a[i]-a[i-1])*i;
sum+=(m-a[n-1])*n;
}
else if(m<a[0]);
else
{
for(i=1; a[i]<=m; i++)
sum+=(a[i]-a[i-1])*i;
sum+=(m-a[i])*i;
}
printf("%d",sum);
return 0;
}
使用双重循环求出每个f[i]会超时哦,只能得50分~