QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#204014#89. Restore ArrayAhmed57#13 443ms130980kbC++235.2kb2023-10-06 23:49:072024-07-04 02:17:12

Judging History

你现在查看的是最新测评结果

  • [2024-07-04 02:17:12]
  • 评测
  • 测评结果:13
  • 用时:443ms
  • 内存:130980kb
  • [2023-10-06 23:49:07]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
int lol[100001];
bool dp[5002][5002][3];
bool vis[5002][5002][3];
vector<array<int,2>> adj[5002];
int n;
bool solve(int i,int la,int dd){
    if(i==n+1){
        return 1;
    }
    if(vis[i][la][dd])return dp[i][la][dd];
    bool c1 = 0;
    vis[i][la][dd] = 1;
    if(lol[i]==-1){
        for(int e = 0;e<2;e++){
            int la0 = 0, la1 =0;
            if(e==dd){
                if(dd==0)la0 = i , la1 = la;
                else la1 = i , la0 = la;
            }else{
                if(e)la1 = i , la0 = i-1;
                else la0 = i , la1 = i-1;
            }
            //cout<<la0<<" "<<la1<<" "<<i<<" "<<e<<endl;
            bool ss = 1;
            for(auto q:adj[i]){
                if(q[1]==0){
                    if(la0<q[0]){
                        ss = 0;
                    }
                }else{
                    if(la1<q[0]){
                        ss = 0;
                    }
                }
            }
            if(ss){
                if(la0==i){
                    c1 = max(c1,solve(i+1,la1,0));
                }else{
                    c1 = max(c1,solve(i+1,la0,1));
                }
            }
        }
    }else{
        for(int e = lol[i];e<=lol[i];e++){
            int la0 =0, la1 = 0;
            if(e==dd){
                if(dd==0)la0 = i , la1 = la;
                else la1 = i , la0 = la;
            }else{
                if(e)la1 = i , la0 = i-1;
                else la0 = i , la1 = i-1;
            }
            //cout<<la0<<" "<<la1<<" "<<i<<" "<<e<<endl;
            bool ss = 1;
            for(auto q:adj[i]){
                if(q[1]==0){
                    if(la0<q[0]){
                        ss = 0;
                    }
                }else{
                    if(la1<q[0]){
                        ss = 0;
                    }
                }
            }
            if(ss){
                if(la0==i){
                    c1 = max(c1,solve(i+1,la1,0));
                }else{
                    c1 = max(c1,solve(i+1,la0,1));
                }
            }
        }
    }
    return dp[i][la][dd] = c1;
}void print(int i,int la,int dd){
    if(i==n+1){
        return ;
    }
    if(lol[i]==-1){
        for(int e = 0;e<2;e++){
            int la0 = 0, la1 =0;
            if(e==dd){
                if(dd==0)la0 = i , la1 = la;
                else la1 = i , la0 = la;
            }else{
                if(e)la1 = i , la0 = i-1;
                else la0 = i , la1 = i-1;
            }
            bool ss = 1;
            for(auto q:adj[i]){
                if(q[1]==0){
                    if(la0<q[0]){
                        ss = 0;
                    }
                }else{
                    if(la1<q[0]){
                        ss = 0;
                    }
                }
            }
            if(ss){
                if(la0==i&&solve(i+1,la1,0)){
                    cout<<e<<" ";
                    print(i+1,la1,0);
                    break;
                }else{
                    cout<<e<<" ";
                    print(i+1,la0,1);
                    break;
                }
            }
        }
    }else{
        for(int e = lol[i];e<=lol[i];e++){
            int la0 =0, la1 = 0;
            if(e==dd){
                if(dd==0)la0 = i , la1 = la;
                else la1 = i , la0 = la;
            }else{
                if(e)la1 = i , la0 = i-1;
                else la0 = i , la1 = i-1;
            }
            bool ss = 1;
            for(auto q:adj[i]){
                if(q[1]==0){
                    if(la0<q[0]){
                        ss = 0;
                    }
                }else{
                    if(la1<q[0]){
                        ss = 0;
                    }
                }
            }
            if(ss){
                if(la0==i&&solve(i+1,la1,0)){
                    cout<<e<<" ";
                    print(i+1,la1,0);
                    break;
                }else{
                    cout<<e<<" ";
                    print(i+1,la0,1);
                    break;
                }
            }
        }
    }
}
signed main(){
    ios_base::sync_with_stdio(false);cin.tie(0);
    int m;
    cin>>n>>m;
    bool ss = 1;
    memset(lol,-1,sizeof lol);
    for(int i = 0;i<m;i++){
        int l,r,k,v;
        cin>>l>>r>>k>>v;
        l++;r++;
        if(k==1&&v==1){
            for(int j = l;j<=r;j++){
                if(lol[j]==0){
                    ss = 0;
                }
                lol[j] = 1;
            }
        }else if(k==(r-l+1)&&v==0){
            for(int j = l;j<=r;j++){
                if(lol[j]==1){
                    ss = 0;
                }
                lol[j] = 0;
            }
        }else{
            if(k==1){
                adj[r].push_back({l,0});
                //cout<<l<<" "<<r<<" "<<0<<"pp"<<endl;
            }else{
                adj[r].push_back({l,1});
                //cout<<l<<" "<<r<<" "<<1<<"pp"<<endl;
            }
        }
    }
    if(ss==0){
        cout<<-1<<endl;
        return 0;
    }
    if(solve(1,0,2)==0){
        cout<<-1<<endl;
        return 0;
    }
    print(1,0,2);
}

详细

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 6092kb

input:

8 13
0 1 2 1
3 5 1 1
5 7 2 1
0 2 2 0
2 5 3 1
3 7 4 1
2 2 1 0
0 1 1 0
2 7 5 1
2 4 1 0
0 4 2 0
4 5 2 1
1 2 1 0

output:

0 1 0 1 1 1 0 0 

result:

wrong answer your plan does not meet the constraint #3

Subtask #2:

score: 13
Accepted

Test #11:

score: 13
Accepted
time: 172ms
memory: 115440kb

input:

4992 9040
331 4442 1 0
3489 4173 1 0
393 4420 1 0
1324 2666 1 0
1317 4131 1 0
399 3010 1 0
1843 4154 1 0
1119 4876 1 0
4216 4980 1 0
2003 4370 1 0
769 1927 1 0
934 3414 1 0
2072 2507 1 0
215 3526 1 0
1493 4107 1 0
539 1643 1 0
2783 4338 1 0
967 1190 1 0
1374 2868 1 0
34 1378 1 0
71 1418 1 0
2120 223...

output:

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

result:

ok your plan is correct!

Test #12:

score: 0
Accepted
time: 87ms
memory: 106584kb

input:

4952 9496
4222 4300 1 0
2892 4392 1 0
4158 4700 1 0
2720 3468 1 0
3002 3114 1 0
1010 4681 1 0
629 4392 1 0
734 2030 1 0
1024 2836 1 0
299 2880 1 0
3728 4858 1 0
1616 2861 1 0
2716 2938 1 0
1265 2892 1 0
1695 1778 1 0
1414 2231 1 0
47 4835 1 0
1554 3489 1 0
2591 3178 1 0
2424 4665 1 0
1089 2460 1 0
2...

output:

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

result:

ok your plan is correct!

Test #13:

score: 0
Accepted
time: 443ms
memory: 130980kb

input:

4995 9192
257 4428 1 0
2504 2636 1 0
208 4875 1 0
1462 2898 1 0
1000 2298 1 0
4596 4745 1 0
614 4072 1 0
1425 1941 1 0
2378 4165 1 0
496 1556 1 0
255 4838 1 0
76 2176 1 0
349 3143 1 0
1325 4409 1 0
854 3653 1 0
4656 4945 1 0
2957 4396 1 0
784 4891 1 0
4488 4917 1 0
1721 4188 1 0
231 4748 1 0
282 332...

output:

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

result:

ok your plan is correct!

Test #14:

score: 0
Accepted
time: 31ms
memory: 98896kb

input:

4938 9603
2957 4666 1 0
2348 3586 1 0
3501 3789 1 0
2741 4713 1 0
1217 1254 1 0
192 2857 1 0
1242 2716 1 0
2315 4140 1 0
2464 2912 1 0
189 2590 1 0
4150 4701 1 0
3604 3942 1 0
2491 2801 1 0
1009 2819 1 0
1508 3589 1 0
88 4021 1 0
86 487 1 0
2857 4336 1 0
1738 4473 1 0
1385 1969 1 0
3187 4675 1 0
753...

output:

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

result:

ok your plan is correct!

Test #15:

score: 0
Accepted
time: 6ms
memory: 6292kb

input:

4923 9528
377 1664 1 0
629 4786 1 0
0 3255 1 0
785 3022 1 1
1009 2063 1 1
3041 4632 1 1
156 3479 1 0
107 4762 1 0
140 1296 1 1
1542 4475 1 0
935 2058 1 0
1230 2832 1 0
2616 2756 1 1
1184 1951 1 0
481 4708 1 0
550 3300 1 0
791 1219 1 0
2423 4289 1 1
1558 2502 1 0
720 2744 1 0
3282 4611 1 1
1795 2077 ...

output:

-1

result:

ok No Solution!

Test #16:

score: 0
Accepted
time: 6ms
memory: 5912kb

input:

4993 9026
407 4008 1 0
1175 3810 1 0
1935 3175 1 0
702 3112 1 0
759 4120 1 0
350 2774 1 1
3711 3813 1 1
1723 2232 1 0
1938 2653 1 1
3780 4873 1 0
1765 4967 1 1
1444 3182 1 1
2189 3485 1 0
1101 1385 1 0
1684 1892 1 1
658 1163 1 0
4143 4382 1 0
2683 4035 1 1
539 4555 1 0
2188 4158 1 0
1081 4527 1 1
42...

output:

-1

result:

ok No Solution!

Subtask #3:

score: 0
Skipped

Dependency #1:

0%

Subtask #4:

score: 0
Skipped

Dependency #1:

0%