• Codeforces Round #298 (Div. 2)--D. Handshakes


    #include <stdio.h>
    #include <algorithm>
    #include <set>
    
    using namespace std;
    
    #define forn(i, n) for (int i = 0; i < int(n); i++)
    
    typedef pair<int, int> pii;
    const int N = 1000001;
    
    int n;
    set<pii> a[3];
    int ans[N];
    
    int main() {
        scanf("%d", &n);
        forn(i, n) {
            int x;
            scanf("%d", &x);
            a[x % 3].insert(make_pair(x, i));
        }
    
        int cur = 0;
        forn(i, n) {
            set <pii> :: iterator it = a[cur % 3].lower_bound(make_pair(cur, -1));  
            pii c;
            if (it != a[cur % 3].end() && (*it).first == cur) {
                c = *(it);
                ans[i] = c.second + 1;
            } else {
                if (it == a[cur % 3].begin()) {
                    puts("Impossible");
                    return 0;
                } else {
                    it--;
                    c = *(it);
                    ans[i] = c.second + 1;
                }
            }       
    
            a[cur % 3].erase(c);
            cur = c.first + 1;
        }
    
        puts("Possible");
        forn(i, n)
            printf("%d ", ans[i]);
    
        return 0;
    }
  • 相关阅读:
    js基础
    装饰模式,代理模式,继承
    Retrofit源码解析
    Android Studio自定义Plugin
    EMV笔记:持卡人认证(CVM)
    阿里代码规范笔记
    文章博客网址收集
    MultiDex解析
    EMV随记(1)
    RSA笔记
  • 原文地址:https://www.cnblogs.com/albert67/p/10384374.html
Copyright © 2020-2023  润新知