Codeforces Round 892 (Div. 2) C. Another Permutation Problem
源码:
cpp
#include <iostream>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <vector>
#include <stack>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
const int maxn = 550;
long long s[maxn];
int main(){
int t;
cin >> t;
while(t--){
long long n;
cin >> n;
long long ans = 0;
s[0] = 0;
for(long long i = 1;i <= n;i++){
s[i] = s[i-1]+i*i;
}
for(long long i = 1;i <= n;i++){
long long sum = s[i-1];
long long maxl = 0;
long long temp;
for(long long j = i;j <= n;j++){
temp = (n-(j-i))*j;
sum += temp;
if(temp>maxl){
maxl = temp;
}
}
sum -= maxl;
if(sum>ans){
ans = sum;
}
}
cout << ans << endl;
}
return 0;
}