제출 #497519

#제출 시각아이디문제언어결과실행 시간메모리
497519ergaganBigger segments (IZhO19_segments)C++17
37 / 100
1577 ms3784 KiB
//я так много думал, что опять попал #include <bits/stdc++.h> #define all(x) x.begin(),x.end() #define pb push_back #define ppb pop_back #define pf push_front #define ppf pop_front #define f first #define s second #define left(v) v + v #define right(v) v + v + 1 #define ub upper_bound #define lb lower_bound #define pll pair<ll,ll> //17 SEVENTEEN //#pragma comment(linker, "/stack:200000000") //#pragma GCC optimize("Ofast") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") using namespace std; typedef long long ll; const long double Pi = acos(-1.0); const ll dx[] = {0,0,1,-1}; const ll dy[] = {1,-1,0,0}; const ll N = (ll) 1e6 + 17; const ll M = (ll) 5e3 + 69; const ll inf = (ll) 1e14 + 3; const ll mod = (ll) 1e9 + 7; ll sq(ll x) { return x * x; } ll zxc = 1, a[N], p[N]; pll dp[N]; void solve() { ll n; cin >> n; for(ll i = 1; i <= n; i++) { cin >> a[i]; p[i] = p[i - 1] + a[i]; dp[i] = {1, p[i]}; } for(ll i = 2; i <= n; i++) { for(ll j = 1; j < i; j++) { if(dp[j].s <= p[i] - p[j]) { if(dp[j].f + 1 > dp[i].f) dp[i] = {dp[j].f + 1, p[i] - p[j]}; if(dp[j].f + 1 == dp[i].f && dp[i].s > p[i] - p[j]) dp[i] = {dp[j].f + 1, p[i] - p[j]}; } // cout << dp[j].s << " " << p[i] - p[j] << "\n"; } // cout << "\n"; } // for(ll i = 1; i <= n; i++) { // cout << dp[i].f << " " << dp[i].s << "\n"; // } cout << dp[n].f; } int main(/*Уверенно*/) { ios_base::sync_with_stdio(0); cin.tie(0); /* freopen(".in", "r", stdin); freopen(".out", "w", stdout); */ // cin >> zxc; while(zxc--) { solve(); } return 0; } // さよならさ いかなくちゃ
#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...