195152025-12-12 09:55:51dfehervariFázis szinkronizáláscpp17Accepted 100/100101ms5032 KiB
/*
Az én megoldásom időlimites

jó megoldás:
    // minden ertekre megnezzuk, hogy mennyibe kerulne
	// hogy "korbemenjen"
	// vagyis az elotte levo nalanal kisebb ertekik visszajusson
	// ezeknek a minimuma a valasz

*/

#include <iostream>
#include <vector>

using namespace std;

struct F
{
    int fazis;
    int db;
};


int main(){
    //Adatok betöltése
    int N,M;
    cin>>N>>M;
    vector<int> adatok(N);
    for(int i=0;i<N;++i) cin>>adatok[i];

    //Az egyes fázisok számának tárolása
    vector<int> fazisok(M);
    for(int i=0;i<N;++i) fazisok[adatok[i]]+=1;

    //for(int i=0;i<M;++i) cout<<fazisok[i]<<";";

    vector<int> letezofazis;
    for(int i=0;i<M;++i) 
        if (fazisok[i]!=0) letezofazis.push_back(i);
    
    int lfdb;
    lfdb = letezofazis.size();

    //for(int i=0;i<lfdb;++i) letezofazis.push_back(letezofazis[i]+M);
    //for(int i=0;i<2*lfdb;++i) cout<<letezofazis[i]<<"-";
    int i,hossz,minhossz,minhely;
    minhossz = letezofazis[lfdb-1]-letezofazis[0];
    minhely = 0;


    for(i=1;i<lfdb;++i){
        /*
        hossz = 0;
        for(int j=0;j<lfdb-1;++j){
            hossz=hossz+(letezofazis[i+j+1]-letezofazis[i+j]);
            
        }
        */
        hossz = letezofazis[i-1]+M-letezofazis[i];
        if (hossz<minhossz) {
            minhossz=hossz;
            minhely=i;
        }
        
    }
    cout<<minhossz<<"\n";
    //cout<<minhossz<<"-"<<minhely<<"\n";
    if(minhossz!=0) for(int i=0;i<minhossz;++i) cout<<(letezofazis[minhely]+i)%M<<" ";



        




    //cin.get();
    //cin.get();
    return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
2Accepted1ms316 KiB
3Accepted1ms508 KiB
subtask210/10
4Accepted1ms316 KiB
5Accepted1ms356 KiB
6Accepted1ms508 KiB
7Accepted1ms548 KiB
subtask315/15
8Accepted1ms316 KiB
9Accepted1ms356 KiB
10Accepted1ms508 KiB
11Accepted1ms548 KiB
12Accepted1ms316 KiB
13Accepted1ms316 KiB
14Accepted1ms316 KiB
15Accepted1ms316 KiB
16Accepted1ms316 KiB
subtask425/25
17Accepted1ms316 KiB
18Accepted1ms356 KiB
19Accepted1ms508 KiB
20Accepted1ms548 KiB
21Accepted1ms316 KiB
22Accepted1ms316 KiB
23Accepted1ms316 KiB
24Accepted1ms316 KiB
25Accepted1ms316 KiB
26Accepted14ms1644 KiB
27Accepted86ms2472 KiB
28Accepted92ms2732 KiB
29Accepted37ms2140 KiB
30Accepted92ms2864 KiB
subtask520/20
31Accepted1ms316 KiB
32Accepted1ms356 KiB
33Accepted1ms508 KiB
34Accepted1ms548 KiB
35Accepted1ms316 KiB
36Accepted1ms316 KiB
37Accepted1ms316 KiB
38Accepted1ms316 KiB
39Accepted1ms316 KiB
40Accepted98ms4008 KiB
41Accepted93ms3612 KiB
42Accepted70ms1844 KiB
43Accepted101ms4876 KiB
44Accepted37ms2100 KiB
45Accepted18ms1372 KiB
46Accepted68ms1844 KiB
subtask630/30
47Accepted1ms316 KiB
48Accepted1ms356 KiB
49Accepted1ms508 KiB
50Accepted1ms548 KiB
51Accepted1ms316 KiB
52Accepted1ms316 KiB
53Accepted1ms316 KiB
54Accepted1ms316 KiB
55Accepted1ms316 KiB
56Accepted14ms1644 KiB
57Accepted86ms2472 KiB
58Accepted92ms2732 KiB
59Accepted37ms2140 KiB
60Accepted92ms2864 KiB
61Accepted98ms4008 KiB
62Accepted93ms3612 KiB
63Accepted70ms1844 KiB
64Accepted101ms4876 KiB
65Accepted37ms2100 KiB
66Accepted18ms1372 KiB
67Accepted68ms1844 KiB
68Accepted97ms3896 KiB
69Accepted101ms5032 KiB
70Accepted79ms2868 KiB
71Accepted100ms4008 KiB
72Accepted97ms3504 KiB