Submission #395208

#TimeUsernameProblemLanguageResultExecution timeMemory
395208ak2006Teams (CEOI11_tea)C++14
0 / 100
92 ms66824 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using vb = vector<bool>; using vvb = vector<vb>; using vi = vector<int>; using vvi = vector<vi>; using vl = vector<ll>; using vvl = vector<vl>; using vc = vector<char>; using vvc = vector<vc>; const ll mod = 1e9 + 7,inf = 1e18; #define pb push_back #define flash ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n; int main() { flash; cin>>n; vvi a(n + 1,vi(2)); vi dp1(n + 1),dp2(n + 1),p(n + 1); if (n <= 5e3){ for (int i = 1;i<=n;i++)cin>>a[i][0],a[i][1] = i; sort(a.begin() + 1,a.end()); dp1[0] = 0,dp2[0] = 0; for (int i = 1;i<=n;i++){ if (a[i][0] > i){dp1[i] = 0,dp2[i] = -1e9;continue;} dp1[i] = 1,dp2[i] = i; p[i] = 0; for (int j = i - a[i][0];j>=1;j--){ if (dp1[i] < dp1[j] + 1){ dp1[i] = dp1[j] + 1; dp2[i] = max(i - j,dp2[j]); p[i] = j; } if (dp1[i] + 1 == dp1[j] && dp2[j] != -1e9){ if (dp2[i] > max(i - j,dp2[j])){ dp2[i] = max(i - j,dp2[j]); p[i] = j; } } } } cout<<dp1[n]<<endl; int i = n; while (i > 0){ int j = p[i]; vi cur; for (;i>j;i--) cur.pb(a[i][1]); cout<<cur.size()<<" "; for (auto it:cur)cout<<it<<" "; cout<<'\n'; } } else return -1; 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...
#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...