제출 #495931

#제출 시각아이디문제언어결과실행 시간메모리
495931ktkeremSlagalica (COCI19_slagalica2)C++17
15 / 70
1092 ms5824 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef __int128 vll;
typedef unsigned __int128 uvll;
ll _i=0;
#define ffn(x) _i=x
#define llll pair<ll , ll>
#define stitr set<ll>::iterator
#define fora(y,x) for(ll y=_i;x>y;y++)
#define pb push_back
#define pf push_front
#define debu cout << "hello\n"
#define fi first
#define sec second
#define all(a) a.begin() , a.end()
const ll limit = 1e13 + 7; 
const ll ous=1e5 + 5;
const ll dx[4] = {0 , -1 , 1 , 0} , dy[4] = {1,0,0,-1};
void solve(){
    ll n;cin >> n;
    ll b = 0 , h = 0;
    ll rs = 0 , rsb = 0 , le = 0 , lb = 0;
    set<ll> st[4];
    fora(i,n){
        ll x , y;cin >> x >> y;
        if(x == 1){
            st[x-1].insert(y);
            b+=2;
        }
        if(x == 2){
            b++;h++;
            st[x-1].insert(y);
        }
        if(x == 3){
            b++;h++;
            st[x-1].insert(y);
        }
        if(x == 4){
            h+=2;
            st[x-1].insert(y);   
        }
        if(x == 5){
            rs = y;
            rsb = 1;
            b++;
        }
        if(x == 6){
            rs = y,
            rsb = 0;
            h++;
        }
        if(x == 7){
            le = y;
            lb = 1;
            b++;
        }
        if(x == 8){
            le = y;
            lb = 0;
            h++;
        }
    }
    //cout << h << " " << b << "\n";
    if(h != b){
        cout << -1 << "\n";
        return;
    }
    cout << rs << " ";
    ll hob = rsb;
    ll k = st[0].size() + st[1].size() + st[2].size() + st[3].size();
    ll l = st[0].size() + st[1].size(), r = st[2].size() + st[3].size();
    ll ret = 2;
    while(k){
        if(hob == 0){
            if(r == 0 && l!=1){
                cout << *st[1].begin() << " ";
                st[1].erase(st[1].begin());
            }
            else{
                if(!st[1].empty() && (st[0].empty() || *st[0].begin() > *st[1].begin())){
                    cout << *st[1].begin() << " ";
                    st[1].erase(st[1].begin());
                }
                else{
                    hob = 1;
                    cout << *st[0].begin() << " ";
                    st[0].erase(st[0].begin());
                }
            }
        }
        else{
            if(l == 0 && r!=1){
                cout << *st[2].begin() << " ";
                st[2].erase(st[2].begin());
            }
            else{
                if(!st[2].empty()  && (st[3].empty() || *st[3].begin() > *st[2].begin())){
                    cout << *st[2].begin() << " ";
                    st[2].erase(st[2].begin());
                }
                else{
                    hob = 0;
                    cout << *st[3].begin() << " ";  
                    st[3].erase(st[3].begin());
                }   
            }
        }
        l = st[0].size() + st[1].size(); r = st[2].size() + st[3].size();
        k = l+r;
    }
    cout << le ;
    return;/**/
}
signed main(){
    ios_base::sync_with_stdio(false);cin.tie(NULL);
    ll t=1;
    //cin >> t;
    while(t--){
        solve();
    }
    return 0; 
}

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

slagalica.cpp: In function 'void solve()':
slagalica.cpp:24:36: warning: variable 'lb' set but not used [-Wunused-but-set-variable]
   24 |     ll rs = 0 , rsb = 0 , le = 0 , lb = 0;
      |                                    ^~
slagalica.cpp:74:8: warning: unused variable 'ret' [-Wunused-variable]
   74 |     ll ret = 2;
      |        ^~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...