제출 #870066

#제출 시각아이디문제언어결과실행 시간메모리
870066MatjazTeams (CEOI11_tea)C++14
0 / 100
381 ms26936 KiB
//
//  CEOI11_TEA.cpp
//  
//
//  Created by Matjaz Leonardis on 06/11/2023.
//

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
    int N;
    cin >> N;
    vector<pair<int,int> > a(N);
    for (int i=0;i<N;i++){
        cin >> a[i].first;
        a[i].second = i + 1;
        
    }
    sort(a.begin(), a.end());
    
    vector<int> max_teams(N);
    vector<int> label(N);
    if (a[0].first == 1) {
        max_teams[0] = 1;
        label[0] = 1;
    } else max_teams[0] = 0;
    
    for (int i=1;i<N;i++){
        if (i < N - 1) max_teams[i] = max_teams[i-1]; else {
            label[i] = 1;
            max_teams[i] = (a[N-1].first == N ? 1 : 1 + max_teams[i - a[N-1].first]);
            continue;
        }
        
        if (i + 1 - a[i].first == 0){
            if (1 >= max_teams[i]){
                max_teams[i] = 1;
                label[i] = 1;
            }
        }
        
        if (i + 1 - a[i].first > 0 && max_teams[i-a[i].first] + 1 >= max_teams[i]){
            max_teams[i] = max_teams[i-a[i].first] + 1;
            label[i] = 1;
        }
    }
    
    cout << max_teams[N-1] << endl;
//    for (int i=0;i<N;i++) cout << max_teams[i] << " ";
//    cout << endl;
//    for (int i=0;i<N;i++) cout << label[i] << " ";
//    cout << endl;
    for (int ptr=N-1;ptr>=0;ptr--){
        if (label[ptr] != 0){
            
            vector<int> s;
            s.push_back(a[ptr].second);
            for (int i=1;i<a[ptr].first;i++){
                s.push_back(a[ptr - i].second);
            }
            ptr -= a[ptr].first;
            while (ptr >= 0 && label[ptr] == 0){
                s.push_back(a[ptr].second);
                ptr--;
            }
            cout << s.size();
            for (int i=0;i<s.size();i++) cout << " " << s[i];
            cout << endl;
            ptr++;
        }
    }
    
    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

tea.cpp: In function 'int main()':
tea.cpp:70:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   70 |             for (int i=0;i<s.size();i++) cout << " " << s[i];
      |                          ~^~~~~~~~~
#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...