Submission

Status:

---P-P--PP

Subtask/Task Score:

40/100

Score: 40

User: rice_ot

Problemset: Internal Order

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-15 16:34:38

#include <bits/stdc++.h>
using namespace std;

int main(){
    int jaowpor; cin>>jaowpor;
    int n = 4;
    map<string, int> pillar;
    for(int i = 1; i<=4; i++){
        string x; cin>>x;
        pillar[x] = i;
    }
    deque<int> order;
    for(auto& i : pillar){
        order.push_back(i.second);
    }
    for(int i = 1; i<jaowpor; i++){
        order.push_back(order.front());
        order.pop_front();
    }
    
    //for(auto i : order) cout<<i<<" ";
    //cout<<"\n";
    
    int loa, lob, loc, lod;
    bool w = false, p = false, e = false;
    
    //w check
    if(jaowpor == 1 || order[0] == 2) w = true;
    for(int i = 0; i<n; i++){
        if(order[i] == 4) loa = i;
        else if(order[i] == 3) lob = i;
    }
    if(loa < lob) w = false;
    
    //p check
    for(int i = 0; i<n; i++){
        if(order[i] == 2) loa = i;
        else if(order[i] == 3) lob = i;
        else if(order[i] == 1) loc = i;
        else if(order[i] == 4) lod = i;
    }
    if(loa<lob && lob<loc && lod != 2) p = true;
    
    //e check
    for(int i = 0; i<n; i++){
        if(order[i] == 4) loa = i;
        else if(order[i] == 1) lob = i;
        else if(order[i] == 2) loc = i;
    }
    if(loc != 3) e = true;
    if( (w == false && p == true)  || (w == true && p == false) && loa<lob){
        e = true;
    }
    
    //cout<<w<<" "<<p<<" "<<e<<"\n";
    
    for(int i = 0; i<n; i++){
        if(order[i] == 4) loa = i;
        else if(order[i] == 2) lob = i;
        else if(order[i] == 1) loc = i;
        else if(order[i] == 3) lod = i;
    }
    
    //pillar awaken!
    if(e == false){
        cout<<"No Croissant :(";
    }
    else if(loa<lob || loc < lod){
        cout<<"CROISSANT with ordering: ";
        for(auto& i : order)cout<<i<<" ";
    }
    
}