제출 #1262150

#제출 시각아이디문제언어결과실행 시간메모리
1262150Szymon_PilipczukBroken Device (JOI17_broken_device)C++20
100 / 100
20 ms1508 KiB
#include "Annalib.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; #define st first #define nd second #define pb push_back #define all(a) a.begin(),a.end() #define rep(a,b) for(int a = 0;a<b;a++) const int inf = 1e9; const ll infl = 1e18; void Anna(int n, ll x,int k,int cc[]) { int j = 0; vector<int> p; rep(i,k) { p.pb(cc[i]); } p.pb(inf); for(int i = 0;i<n;i+=3) { vector<int> val(3,0); if(p[j] == i) { j++; if(p[j] != i+1 && p[j] != i+2) { if(x%2 == 0) { val[2] = 1; } else { val[1] = 1; val[2] = 1; } x/=2; } } else if(p[j] == i+1) { j++; if(p[j] != i+2) { if(x%2 == 0) { val[2] = 1; } else { val[0] = 1; } x/=2; } } else if(p[j] == i+2) { if(x%4 == 0) { val[1] = 1; x/=4; } else if(x%4 == 2) { val[0] = 1; val[1] = 1; x/=4; } else { val[0] = 1; x/=2; } } else { if(x%4 == 0) { val[1] = 1; } else if(x%4 == 1) { val[0] = 1; val[2] = 1; } else if(x%4 == 2) { val[0] = 1; val[1] = 1; } else { val[0] = 1; val[1] = 1; val[2] = 1; } x/=4; } while(p[j] < i + 3) j++; rep(q,3) { Set(i+q,val[q]); //cerr<<val[q]<<" "; } } //cerr<<"\n"; }
#include "Brunolib.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; #define st first #define nd second #define pb push_back #define all(a) a.begin(),a.end() #define rep(a,b) for(int a = 0;a<b;a++) const int inf = 1e9; const ll infl = 1e18; ll Bruno(int n,int a[]) { int j = 0; ll ans = 0; for(int i = 0;i<n;i+=3) { int val = 4 * a[i] + 2 * a[i+1] + a[i+2]; if(val == 1) { j++; } else if(val == 2) { j+=2; } else if(val == 3) { ans += (1LL<<j); j++; } else if(val == 4) { ans += (1LL<<j); j++; } else if(val == 5) { ans += (1LL<<j); j+=2; } else if(val == 6) { ans += (1LL<<j) * 2; j+=2; } else if(val == 7) { ans += (1LL<<j) * 3; j+=2; } //cerr<<ans<<" "<<a[i]<<" "<<a[i+1]<<" "<<a[i+2]<<"\n"; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...