Submission #92429

# Submission time Handle Problem Language Result Execution time Memory
92429 2019-01-02T20:17:40 Z igzi Broken Device (JOI17_broken_device) C++17
100 / 100
36 ms 3264 KB
#include <bits/stdc++.h>
#include "Annalib.h"

using namespace std;

void Anna( int N, long long x, int K, int P[]){
int i;
bool b[155];
int a[155]={67, 70, 94, 21, 88, 97, 77, 78, 89, 138, 111, 13, 75, 123, 145, 26, 62, 91, 105, 115, 76, 114, 144, 16, 106, 74, 108, 102, 86, 46, 28, 98, 5, 149, 126, 38, 130, 90, 27, 14, 119, 128, 139, 20, 53, 85, 117, 109, 39, 100, 24, 49, 0, 65, 143, 36, 61, 134, 73, 99, 4, 69, 82, 33, 136, 137, 147, 66, 6, 25, 19, 127, 133, 56, 40, 116, 23, 83, 68, 84, 71, 48, 54, 51, 30, 52, 31, 7, 12, 107, 55, 35, 22, 103, 8, 140, 121, 135, 141, 131, 57, 15, 101, 81, 118, 18, 129, 93, 11, 45, 9, 125, 148, 146, 63, 64, 72, 41, 50, 29, 80, 120, 79, 110, 47, 87, 60, 95, 1, 142, 42, 44, 58, 10, 132, 37, 113, 122, 43, 17, 2, 124, 104, 59, 92, 32, 3, 112, 34, 96};
for(i=0;i<N;i++) b[i]=false;
for(i=0;i<K;i++){
b[P[i]]=true;}
for(i=0;i<N;i+=3){
if(b[a[i]] && b[a[i+1]] && b[a[i+2]]) {Set(a[i],0); Set(a[i+1],0); Set(a[i+2],0); continue;}
if(b[a[i]] && b[a[i+1]]){
Set(a[i],0);
Set(a[i+1],0);
if(x%3==0) {Set(a[i+2],1); x/=3;}
else Set(a[i+2],0);
continue;
}
if(b[a[i+2]] && b[a[i+1]]){
Set(a[i+2],0);
Set(a[i+1],0);
if(x%3==2) {Set(a[i],1); x/=3;}
else Set(a[i],0);
continue;
}
if(b[a[i]] && b[a[i+2]]){
Set(a[i],0);
Set(a[i+2],0);
if(x%3==1) {Set(a[i+1],1); x/=3;}
else Set(a[i+1],0);
continue;
}
if(!b[a[i]] && !b[a[i+1]] && !b[a[i+2]] && x%9==0){
Set(a[i],1);
Set(a[i+1],1);
Set(a[i+2],1);
x/=9;
continue;
}
if(!b[a[i+1]] && !b[a[i+2]]){
    Set(a[i],0);
    if(x%3==0) {Set(a[i+1],0); Set(a[i+2],1);}
    if(x%3==1) {Set(a[i+1],1); Set(a[i+2],0);}
    if(x%3==2) {Set(a[i+1],1); Set(a[i+2],1);}
    x/=3;
    continue;
}
if(b[a[i+1]]){
    Set(a[i+1],0);
    if(x%3==0) {Set(a[i],0); Set(a[i+2],1);}
    if(x%3==1) {Set(a[i],1); Set(a[i+2],1);}
    if(x%3==2) {Set(a[i],1); Set(a[i+2],0);}
    x/=3;
    continue;
}
if(b[a[i+2]]){
    Set(a[i+2],0);
    if(x%3==0) {Set(a[i],1); Set(a[i+1],1);}
    if(x%3==1) {Set(a[i],0); Set(a[i+1],1);}
    if(x%3==2) {Set(a[i],1); Set(a[i+1],0);}
    x/=3;
}
}
}
#include <bits/stdc++.h>
#include "Brunolib.h"

using namespace std;

long long Bruno( int N, int A[]){
long long ans,st,i,tmp;
int a[155]={67, 70, 94, 21, 88, 97, 77, 78, 89, 138, 111, 13, 75, 123, 145, 26, 62, 91, 105, 115, 76, 114, 144, 16, 106, 74, 108, 102, 86, 46, 28, 98, 5, 149, 126, 38, 130, 90, 27, 14, 119, 128, 139, 20, 53, 85, 117, 109, 39, 100, 24, 49, 0, 65, 143, 36, 61, 134, 73, 99, 4, 69, 82, 33, 136, 137, 147, 66, 6, 25, 19, 127, 133, 56, 40, 116, 23, 83, 68, 84, 71, 48, 54, 51, 30, 52, 31, 7, 12, 107, 55, 35, 22, 103, 8, 140, 121, 135, 141, 131, 57, 15, 101, 81, 118, 18, 129, 93, 11, 45, 9, 125, 148, 146, 63, 64, 72, 41, 50, 29, 80, 120, 79, 110, 47, 87, 60, 95, 1, 142, 42, 44, 58, 10, 132, 37, 113, 122, 43, 17, 2, 124, 104, 59, 92, 32, 3, 112, 34, 96};
ans=0;
st=1;
for(i=0;i<N;i+=3){
if(A[a[i]]==0 && A[a[i+1]]==0 && A[a[i+2]]==0) continue;
tmp=4*A[a[i]]+2*A[a[i+1]]+A[a[i+2]];
if(tmp==7){st*=9; continue;}
if(tmp==2 || tmp==5) ans+=st;
if(tmp==3 || tmp==4) ans+=2*st;
st*=3;
}
return ans;
}
# Verdict Execution time Memory Grader output
1 Correct 33 ms 3056 KB Output is correct - L* = 40
2 Correct 34 ms 3056 KB Output is correct - L* = 40
3 Correct 33 ms 3056 KB Output is correct - L* = 40
4 Correct 33 ms 3056 KB Output is correct - L* = 40
5 Correct 35 ms 3056 KB Output is correct - L* = 40
6 Correct 34 ms 3056 KB Output is correct - L* = 40
7 Correct 33 ms 3056 KB Output is correct - L* = 40
8 Correct 33 ms 3056 KB Output is correct - L* = 40
9 Correct 33 ms 3056 KB Output is correct - L* = 40
10 Correct 35 ms 3056 KB Output is correct - L* = 40
11 Correct 36 ms 3064 KB Output is correct - L* = 40
12 Correct 34 ms 3056 KB Output is correct - L* = 40
13 Correct 35 ms 3056 KB Output is correct - L* = 40
14 Correct 34 ms 3056 KB Output is correct - L* = 40
15 Correct 34 ms 3056 KB Output is correct - L* = 40
16 Correct 35 ms 3056 KB Output is correct - L* = 40
17 Correct 34 ms 3064 KB Output is correct - L* = 40
18 Correct 34 ms 3264 KB Output is correct - L* = 40
19 Correct 35 ms 3056 KB Output is correct - L* = 40
20 Correct 33 ms 3056 KB Output is correct - L* = 40
21 Correct 34 ms 3056 KB Output is correct - L* = 40
22 Correct 34 ms 3056 KB Output is correct - L* = 40
23 Correct 33 ms 3056 KB Output is correct - L* = 40
24 Correct 33 ms 3056 KB Output is correct - L* = 40
25 Correct 33 ms 3056 KB Output is correct - L* = 40
26 Correct 33 ms 2904 KB Output is correct - L* = 40
27 Correct 33 ms 3056 KB Output is correct - L* = 40
28 Correct 33 ms 3056 KB Output is correct - L* = 40
29 Correct 33 ms 3056 KB Output is correct - L* = 40
30 Correct 33 ms 3056 KB Output is correct - L* = 40
31 Correct 34 ms 3056 KB Output is correct - L* = 40
32 Correct 34 ms 3056 KB Output is correct - L* = 40
33 Correct 33 ms 3000 KB Output is correct - L* = 40
34 Correct 33 ms 3056 KB Output is correct - L* = 40
35 Correct 33 ms 3056 KB Output is correct - L* = 40
36 Correct 34 ms 3056 KB Output is correct - L* = 40
37 Correct 33 ms 3056 KB Output is correct - L* = 40
38 Correct 33 ms 3056 KB Output is correct - L* = 40
39 Correct 33 ms 3056 KB Output is correct - L* = 40
40 Correct 33 ms 3056 KB Output is correct - L* = 40