結果

問題 No.1675 Strange Minimum Query
コンテスト
ユーザー vjudge1
提出日時 2025-12-08 18:53:06
言語 C++17
(gcc 13.3.0 + boost 1.89.0)
結果
WA  
実行時間 -
コード長 3,004 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,406 ms
コンパイル使用メモリ 206,496 KB
実行使用メモリ 7,888 KB
最終ジャッジ日時 2025-12-08 18:53:40
合計ジャッジ時間 6,529 ms
ジャッジサーバーID
(参考情報)
judge1 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample WA * 3
other WA * 30 RE * 4
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <bits/stdc++.h>
#define pii pair<int , int>
#define ll long long
#define fi first
#define se second
#define BIT(i,x) (1&(x>>i-1))
#define MB(x) (x&(-x))
#define LB(x) __builtin_clzll(1) - __builtin_clzll(x) + 1;
#define ONBIT(i,mask) ((mask  (1<<i-1)))
#define OFFBIT(i,mask) ((mask ^ (1<<i-1)))
#define nmax 1000006
using namespace std;
const long long mod=1e9+7;
ll n,q;
ll l[100005],r[100005],p[100005];
namespace sub1
{
    ll a[15],temp,kt;
    void solve()
    {
        for(int i=1;i<=q;i++)
    {
        cin>>l[i]>>r[i]>>p[i];
    }
    for(int i=1;i<=n;i++)
        a[i]=i;
    do
    {
        kt=0;
        for(int i=1;i<=q;i++)
        {
            temp=1e18;
            for(int j=l[i];j<=r[i];j++)
                temp=min(temp,a[j]);
            if(temp!=p[i])
            {
                kt=1;
                break;
            }
        }
        if(kt==0)
        {
            for(int i=1;i<=n;i++)
                cout<<a[i]<<" ";
            return;
        }
    }
    while(next_permutation(a+1,a+n+1));
    for(int i=1;i<=n;i++)
        cout<<-1<<" ";
    }
}
namespace sub2
{
    ll a[100005],temp,ck=0;
    vector<ll>v;
    vector<pair<pair<ll,ll>,ll>>kt;
    bool cmp(pair<pair<ll,ll>,ll> a,pair<pair<ll,ll>,ll> b)
    {
        return a.se>b.se;
    }
    void solve()
    {
        for(int i=0;i<=n;i++)
            v.push_back(i);
        for(ll i=1;i<=q;i++)
        {
            kt.push_back({{l[i],r[i]-l[i]},p[i]});
            v[p[i]]=0;
            a[l[i]]=p[i];
        }
        sort(kt.begin(),kt.end(),cmp);
        ll cs=n;
        for(auto z:kt)
        {
            for(int i=1;i<=z.fi.se;i++)
            {
                if(v[cs]==0 and cs>0)
                    while(v[cs]==0 and cs>0)
                        cs--;
                if(cs==0)
                {
                    ck=1;
                    break;
                }
                if(v[cs]<z.se)
                {
                    ck=1;
                    break;
                }
                a[i+z.fi.fi]=v[cs];
                cs--;
            }
            if(ck==1)
                break;
        }
        if(ck==1)
        {
            for(int i=1;i<=n;i++)
                cout<<-1<<" ";
        }
        else
        {
            for(int i=1;i<=n;i++)
            {
                if(a[i]==0)
                {
                    if(v[cs]==0 and cs>0)
                        while(v[cs]==0 and cs>0)
                            cs--;
                    cout<<v[cs]<<" ";
                }
                else
                    cout<<a[i]<<" ";
            }

        }
    }
}
int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>n>>q;
    if(n<=10)
        sub1::solve();
    else
    {
        ll d=0;
        for(int i=1;i<=q;i++)
        {
            cin>>l[i]>>r[i]>>p[i];
            if(i>1 and l[i]>r[i-1])
                d++;
        }
        if(d==q-1)
        {
            sub2::solve();
        }
    }

}
0