Submission #753076

# Submission time Handle Problem Language Result Execution time Memory
753076 2023-06-04T14:24:16 Z Username4132 Ili (COI17_ili) C++14
49 / 100
4000 ms 15784 KB
#include<iostream>
#include<bitset>
using namespace std;
#define forn(i, n) for(int i=0; i<(int)n; ++i)
 
const int MAXN=10010;
int n, m, pr[MAXN][2];
bool pb[MAXN][2];
string info, ans;
bitset<MAXN> arr[MAXN], wi[MAXN], brr[MAXN], one("1"), zero("0"), nuli, uni, add;
 
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> n >> m >> info;
    ans.assign(m, '?');
    forn(i, m){
        char c1, c2;
        int a1, a2;
        cin >> c1 >> a1 >> c2 >> a2;
        --a1, --a2;
        bitset<MAXN> bi1 = c1=='x'? (one<<a1) : arr[a1];
        bitset<MAXN> bi2 = c2=='x'? (one<<a2) : arr[a2];
        arr[i]=bi1|bi2;
        pb[i][0]=(c1=='x'), pb[i][1]=(c2=='x');
        pr[i][0]=a1, pr[i][1]=a2;
    }
    forn(i, m) if(info[i]=='0') nuli|=arr[i];
    nuli=~nuli;
    forn(i, m) if(info[i]=='1') uni|=(1<<i);
    forn(i, m){
        arr[i]&=nuli;
        if(arr[i].count()==0) ans[i]='0';
    }
    forn(i, m) forn(j, n) if((arr[i]&(one<<j)).count()) wi[j]|=(one<<i);
    forn(i, n) if((nuli&(one<<i)).count()==0) wi[i]=~zero;
    forn(i, m){
        bitset<MAXN> b1 = pb[i][0]? wi[pr[i][0]] : brr[pr[i][0]];
        bitset<MAXN> b2 = pb[i][1]? wi[pr[i][1]] : brr[pr[i][1]];
        brr[i]=b1&b2;
    }
    forn(i, m) if(info[i]=='1') add|=brr[i];
    forn(i, m) if((add&(one<<i)).count()) ans[i]='1';
    cout << ans << endl;    
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 432 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 432 KB Output is correct
8 Correct 45 ms 1576 KB Output is correct
9 Correct 45 ms 1348 KB Output is correct
10 Correct 81 ms 1740 KB Output is correct
11 Correct 67 ms 1656 KB Output is correct
12 Correct 65 ms 1600 KB Output is correct
13 Correct 53 ms 1576 KB Output is correct
14 Correct 25 ms 1612 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 432 KB Output is correct
8 Correct 45 ms 1576 KB Output is correct
9 Correct 45 ms 1348 KB Output is correct
10 Correct 81 ms 1740 KB Output is correct
11 Correct 67 ms 1656 KB Output is correct
12 Correct 65 ms 1600 KB Output is correct
13 Correct 53 ms 1576 KB Output is correct
14 Correct 25 ms 1612 KB Output is correct
15 Correct 2583 ms 15784 KB Output is correct
16 Execution timed out 4042 ms 10860 KB Time limit exceeded
17 Halted 0 ms 0 KB -