제출 #333405

#제출 시각아이디문제언어결과실행 시간메모리
333405rocks03수열 (APIO14_sequence)C++14
39 / 100
2069 ms4972 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(){ cin >> N >> K; 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++){ opt[k][i] = N; 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 - 1; } } } } cout << dp[K][0] << "\n"; int k = K, i = 0; while(k > 0 && opt[k][i] < N){ cout << opt[k][i] + 1 << " "; i = opt[k][i] + 1; 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...