답안 #395041

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
395041 2021-04-27T16:25:45 Z ak2006 Teams (CEOI11_tea) C++14
0 / 100
2500 ms 66820 KB
#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 <= 5e5){
        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;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Incorrect 1 ms 204 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 15 ms 680 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 13 ms 672 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 2571 ms 6024 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 2542 ms 6784 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 63 ms 50168 KB Execution failed because the return code was nonzero
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 80 ms 66800 KB Execution failed because the return code was nonzero
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 80 ms 66820 KB Execution failed because the return code was nonzero
2 Halted 0 ms 0 KB -