Submission #395042

#TimeUsernameProblemLanguageResultExecution timeMemory
395042ak2006Teams (CEOI11_tea)C++14
0 / 100
80 ms66848 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 fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n; int main() { fast; cin>>n; vvi a(n + 1,vi(2)); vi dp1(n + 1,0),dp2(n + 1,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++){ for (int j = i - a[i][0] + 1;j>=1;j--){ if (dp1[i] < dp1[j - 1] + 1) dp1[i] = dp1[j - 1] + 1,p[i] = j - 1,dp2[i] = max(i - j + 1,dp2[j - 1]); if (dp1[i] == dp1[j - 1] + 1){ if (dp2[i] > max(i - j + 1,dp2[j - 1]))dp2[i] = max(i - j + 1,dp2[j - 1]),p[i] = j - 1; } } if (dp1[i] < 1){ dp1[i] = 1; dp2[i] = i; p[i] = 0; } } cout<<dp1[n]<<'\n'; 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...