Submission #533627

#TimeUsernameProblemLanguageResultExecution timeMemory
533627CaroLindaTeams (CEOI11_tea)C++14
50 / 100
2598 ms26628 KiB
#include <bits/stdc++.h> #define mk make_pair #define lp(i,a,b) for(int i = a ; i < b; i++ ) #define sz(x) (int)x.size() #define all(x) x.begin(),x.end() using namespace std ; int main(){ ios_base::sync_with_stdio(false ); cin.tie(0) ; int N ; cin >> N ; vector<int> arr(N) , idx(N) ; iota(all(idx) , 0) ; vector<int> corte(N) ; for(auto &e : arr ) cin >> e ; sort(all(idx),[&](int a, int b) { return arr[a] < arr[b] ; }) ; vector<pair<int,int> > dp(N) ; for(int i = 0 ; i < N ; i++){ if( i+1 < arr[idx[i]] ){ dp[i] = make_pair( -1 , -N-1 ) ; continue ; } dp[i] = make_pair(1 , -i-1 ) ; corte[i] = -1 ; for(int j = i-arr[idx[i]] ; j >= 0 ; j-- ){ pair<int,int> aux = mk(dp[j].first+1 , min(dp[j].second,-(i-j)) ) ; if(aux > dp[i]){ dp[i] = aux ; corte[i] = j ; } } } vector< vector<int> > ans ; int x = N-1 ; while(x != -1){ ans.push_back(vector<int>()) ; for(int i = corte[x]+1 ; i <= x ; i++ ) ans.back().push_back(idx[i]) ; x = corte[x] ; } cout << sz(ans) << "\n" ; for(auto e : ans ){ cout << sz(e) << " " ; for(auto ee : e ) cout << ee+1 << " " ; cout << "\n" ; } }
#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...