답안 #258570

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
258570 2020-08-06T07:17:21 Z dantoh000 Restore Array (RMI19_restore) C++14
13 / 100
600 ms 640 KB
#include <bits/stdc++.h>
using namespace std;
int n,m;
int l[10005],r[10005],k[10005],val[10005];
int ans[10005];
int main(){
    scanf("%d%d",&n,&m);
    for (int i = 0; i < m; i++){
        scanf("%d%d%d%d",&l[i],&r[i],&k[i],&val[i]);
    }
    if (n <= 18){
        for (int mask = 0; mask < (1<<n); mask++){
            bool can = 1;
            for (int i = 0; i < m; i++){
                int ct1 = 0;
                for (int j = l[i]; j <= r[i]; j++){
                    if (mask&(1<<j)) ct1++;
                }
                int ct0 = r[i]-l[i]+1-ct1;
                int chk = ct0 >= k[i] ? 0 : 1;
                can &= (chk == val[i]);
            }
            if (can){
                for (int i = 0; i < n; i++){
                    printf("%d ",(mask>>i)&1);
                }
                return 0;
            }
        }

    }
    else{
        for (int i = 0; i < m; i++){
            if (k[i] != 1) return 0;
            if (val[i] == 1){
                for (int j = l[i]; j <= r[i]; j++){
                    ans[j] = 1;
                }
            }
        }
        for (int i = 0; i < m; i++){
            if (val[i] == 0){
                bool have = 0;
                for (int j = l[i]; j <= r[i]; j++){
                    if (ans[j] == 0) have = 1;
                }
                if (!have){
                    printf("-1\n");
                    return 0;
                }
            }
        }
        for (int i = 0; i < n; i++){
            printf("%d ",ans[i]);
        }

    }
}

Compilation message

restore.cpp: In function 'int main()':
restore.cpp:7:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&n,&m);
     ~~~~~^~~~~~~~~~~~~~
restore.cpp:9:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d%d%d",&l[i],&r[i],&k[i],&val[i]);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 152 ms 384 KB Output is correct
4 Correct 129 ms 504 KB Output is correct
5 Execution timed out 632 ms 384 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 640 KB Output is correct
2 Correct 16 ms 640 KB Output is correct
3 Correct 18 ms 640 KB Output is correct
4 Correct 16 ms 640 KB Output is correct
5 Correct 6 ms 640 KB Output is correct
6 Correct 6 ms 640 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 640 KB Output is correct
2 Correct 16 ms 640 KB Output is correct
3 Correct 18 ms 640 KB Output is correct
4 Correct 16 ms 640 KB Output is correct
5 Correct 6 ms 640 KB Output is correct
6 Correct 6 ms 640 KB Output is correct
7 Incorrect 4 ms 640 KB Unexpected end of file - int32 expected
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 152 ms 384 KB Output is correct
4 Correct 129 ms 504 KB Output is correct
5 Execution timed out 632 ms 384 KB Time limit exceeded
6 Halted 0 ms 0 KB -