题解
木板接水
http://www.nowcoder.com/questionTerminal/dee0bcab26a648ad9999bc891d460034
跟leetcode第42题接雨水相同。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
int main()
{
int T;
int a,b,c,n;
int sum,max=0,maxIndex;
int *data=(int*)malloc(sizeof(int)*1e5);
int start;
while(scanf("%d",&T)!=EOF)
{
for(int i=0;i<T;i++)
{
sum=0;
max=0;
maxIndex=0;
scanf("%d",&n);
for(int j=0;j<n;j++)
{
scanf("%d",&data[j]);
if(max<data[j])
{
max=data[j];
maxIndex=j;
}
}
a=data[0];
start=0;
for(int j=1;j<=maxIndex;j++)
{
if(data[j]>=a)
{
sum+=a*(j-start);
a=data[j];
start=j;
}
}
a=data[n-1];
start=n-1;
for(int j=n-2;j>=maxIndex;j--)
{
if(data[j]>=a)
{
sum+=a*(start-j);
a=data[j];
start=j;
}
}
printf("%d\n",sum);
}
}
return 0;
} 