说实话我都不知道可持久化动态图是个啥东西……
题目其实是贪心:显然每次删除第一个元素,可以让整体代价最小。
但 时,代价是负数,要求最大,那么对于
而言最大的下标就是原始下标。
#include <cstdio> #include <algorithm> #include <ctype.h> const int bufSize = 1e6; #define int long long #define DEBUG inline char nc() { #ifdef DEBUG return getchar(); #endif static char buf[bufSize],*p1 = buf,*p2 = buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,bufSize,stdin),p1==p2)?EOF:*p1++; } template<typename T> inline T read(T &r) { static char c; static int flag; r=0; flag = 1; for(c = nc();!isdigit(c);c = nc()) if(c == '-') flag = -1; for(;isdigit(c);c=nc()) r = r * 10 + c - 48; return r * flag; } const int maxn = 1e6 + 100; int n; int a[maxn]; signed main() { scanf("%lld",&n); for(int i = 1;i<=n;++i) scanf("%lld",a + i); long long sum = 0; for(int i = 1;i<=n;++i) if(a[i] < 0) sum += i * a[i]; else sum += a[i]; printf("%lld\n",sum); return 0; }