제출 #333402

#제출 시각아이디문제언어결과실행 시간메모리
333402rocks03수열 (APIO14_sequence)C++14
0 / 100
2078 ms1468 KiB
#pragma GCC target("avx2") #pragma GCC optimization("O3") #pragma GCC optimization("unroll-loops") #include<bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int, int> #define pll pair<ll, ll> #define ff first #define ss second #define pb push_back #define SZ(x) ((int)(x).size()) #define all(x) x.begin(), x.end() mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int MAXK = 2e2+10; const int MAXN = 1e5+100; int N, K, a[MAXN], opt[MAXK][MAXN]; ll pref[MAXN], dp[MAXK][MAXN]; void solve(){ int N, K; cin >> N >> K; int a[N]; int pref[N+1]; pref[0] = 0; for(int i = 0; i < N; i++){ cin >> a[i]; pref[i+1] = pref[i] + a[i]; } for(int k = 1; k <= K; k++){ for(int i = 0; i < N; i++){ for(int j = i+1; j < N; j++){ ll lt = pref[j] - pref[i], rt = pref[N] - pref[j]; ll res = dp[k-1][j] + lt * rt; if(res > dp[k][i]){ dp[k][i] = res; opt[k][i] = j; } } } } cout << dp[K][0] << "\n"; int k = K, i = 0; while(k > 0 && i < N){ cout << i + 1 << " "; if(opt[k][i] == i) break; i = opt[k][i]; k--; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); solve(); return 0; }

컴파일 시 표준 에러 (stderr) 메시지

sequence.cpp:2: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
    2 | #pragma GCC optimization("O3")
      | 
sequence.cpp:3: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
    3 | #pragma GCC optimization("unroll-loops")
      |
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...