제출 #693642

#제출 시각아이디문제언어결과실행 시간메모리
693642saayan007Solar Storm (NOI20_solarstorm)C++17
28 / 100
623 ms1132 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using pi = pair<int, int>; using pl = pair<ll, ll>; using vi = vector<int>; using vl = vector<ll>; using vpi = vector<pi>; using vpl = vector<pl>; #define fur(i, a, b) for(ll i = a; i <= (ll) b; ++i) #define ruf(i, a, b) for(ll i = a; i >= (ll) b; --i) #define fr first #define sc second #define mp make_pair #define pb push_back #define eb emplace_back #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() #define nl "\n" const ll mxn = 1e4L + 1; #warning mxn is according to subtask ll n, s, k; ll d[mxn]; ll v[mxn]; ll x[mxn]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> s >> k; fur(i, 1, n - 1) { cin >> d[i]; } fur(i, 1, n) { cin >> v[i]; } x[1] = 0; fur(i, 2, n) { x[i] = x[i - 1] + d[i - 1]; } ll sum[n + 1]; sum[0] = 0; fur(i, 1, n) { sum[i] = sum[i - 1] + v[i]; } ll r[n + 1]; ll cr = 1; fur(i, 1, n) { while(cr + 1 <= n && x[i] + k >= x[cr + 1]) { ++cr; } r[i] = cr; } ll res = 0; vl ans, tmp; fur(i, 1, n) { tmp.clear(); ll ei = i; bool add = 0; fur(j, 1, s) { ei = r[ei]; tmp.eb(ei); ei = r[ei]; if(ei < n) { ++ei; add = 1; } } if(add) --ei; if(sum[ei] - sum[i - 1] > res) { res = sum[ei] - sum[i - 1]; swap(ans, tmp); } } cout << ans.size() << nl; for(auto u : ans) { cout << u << ' '; } cout << nl; }

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

SolarStorm.cpp:24:2: warning: #warning mxn is according to subtask [-Wcpp]
   24 | #warning mxn is according to subtask
      |  ^~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...