QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#931092#7010. Rikka with A Long Colour PaletteAlliy666AC ✓4889ms14972kbC++262.5kb2025-03-10 19:26:482025-03-10 19:26:48

Judging History

This is the latest submission verdict.

  • [2025-03-10 19:26:48]
  • Judged
  • Verdict: AC
  • Time: 4889ms
  • Memory: 14972kb
  • [2025-03-10 19:26:48]
  • Submitted

answer

#include <bits/stdc++.h>
#include <bits/extc++.h>
using namespace std;
using namespace __gnu_pbds;
using namespace __gnu_cxx;
const int maxn=1e6+5;
class A
{
public:
    int l,r;
}a[maxn];
class B
{
public:
    int num,loc,typ;
    bool operator<(const B &that)const
    {
        if (loc==that.loc)
            return typ<that.typ;
        return loc<that.loc;
    }
};
inline long long input(){
    long long n=0;
    int f=1;
    char c=getchar();
    while(c<'0' || c>'9'){
        if(c=='-') f=-1;
        c=getchar();
    }
    while(c>='0' && c<='9'){
        n=(n<<3)+(n<<1)+(c^48);
        c=getchar();
    }
    return n*f;
}
int flag[maxn];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int t;
    t=input();
    while(t--)
    {
        vector<B> v;
        int n,k;
        n=input();
        k=input();
        for (int i=1;i<=n;i++)
        {
            a[i].l=input();
            a[i].r=input();
            v.push_back({i,a[i].l,1});
            v.push_back({i,a[i].r,0});
            flag[i]=0;
        }
        sort(v.begin(),v.end());
        std::priority_queue<int> s;
        set<pair<int,int>> mp;
        for (int i=1;i<=k;i++)
            s.push(i);
        int pre=0,ans=0;
        for (auto i:v)
        {
            if (pre)
                ans+=i.loc-pre;
            if (i.typ)
            {
                if (s.empty())
                {
                    auto it=*mp.begin();
                    if (it.first<a[i.num].r)
                    {
                        mp.erase(mp.begin());
                        mp.insert({a[i.num].r,it.second});
                        flag[i.num]=it.second;
                    }
                    else
                        flag[i.num]=1;
                }
                else
                {
                    auto now=s.top();
                    s.pop();
                    mp.insert({a[i.num].r,now});
                    flag[i.num]=now;
                }
            }
            else
            {
                auto it=mp.find({i.loc,flag[i.num]});
                if (it!=mp.end())
                {
                    mp.erase(it);
                    s.push(flag[i.num]);
                }
            }
            if (s.empty())
                pre = i.loc;
            else
                pre=0;
        }
        cout<<ans<<'\n';
        for (int i=1;i<n;i++)
            cout<<flag[i]<<' ';
        cout<<flag[n]<<'\n';
    }
}

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 5708kb

input:

1
3 2
1 5
2 4
3 6

output:

3
2 1 1

result:

ok 1 cases

Test #2:

score: 0
Accepted
time: 14ms
memory: 5736kb

input:

1000
100 2
22 75
26 45
72 81
29 47
2 97
25 75
82 84
17 56
2 32
28 37
39 57
11 18
6 79
40 68
16 68
40 63
49 93
10 91
55 68
31 80
18 57
28 34
55 76
21 80
22 45
11 67
67 74
4 91
34 35
65 80
21 95
1 52
25 31
2 53
22 96
89 99
7 66
2 32
33 68
75 92
10 84
28 94
12 54
9 80
21 43
51 92
20 97
7 25
17 67
38 10...

output:

99
1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
99
1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok 1000 cases

Test #3:

score: 0
Accepted
time: 572ms
memory: 14972kb

input:

910
2000 1
291106515 907601188
257183002 580226984
677669535 703754379
578360426 581095542
555843963 776993944
590501585 787712383
268406144 715107805
67868779 956936247
805517214 820489184
673778237 728344625
320030940 533725999
412875077 899787237
376585734 712537132
203142903 420447884
58970816 3...

output:

999533742
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok 910 cases

Test #4:

score: 0
Accepted
time: 4889ms
memory: 7412kb

input:

1000
2000 200000
114320346 414198300
865005596 959003090
308399397 989829253
20993741 74598817
703749014 929597776
326260003 367629651
500954265 989504336
465349215 518791173
33679837 905990625
847419333 879685651
285496458 697635762
845139062 964850697
235259972 953405425
872309480 898530420
302629...

output:

0
199635 199988 199209 199930 199936 199655 199637 199208 199878 199933 199251 199949 199346 199962 199966 199770 199643 199266 199191 199449 199763 199684 199854 199618 199719 199980 199314 199115 199684 199820 199162 199973 199848 199744 199906 199538 199805 199885 199410 199682 199061 199417 1996...

result:

ok 1000 cases