Submission #100078

#TimeUsernameProblemLanguageResultExecution timeMemory
100078dwscBroken Device (JOI17_broken_device)C++14
51 / 100
69 ms3120 KiB
#include "Annalib.h" #include <bits/stdc++.h> using namespace std; void Anna( int N, long long X, int K, int P[] ){ int broke[N] = {0}; for (int i = 0; i < K; i++) broke[P[i]] = 1; long long pow = 1; for (int i = 0; i < 59; i++) pow*= 2; //cout << pow; for (int i = 0; i < N; i+= 3){ int countbroke = 0; for (int j = i; j < i+3; j++){ countbroke += broke[j]; } //cout << i << " " << countbroke << " " << pow<< "\n"; if (pow == 0) countbroke = 3; if (countbroke >= 1){ for (int j = i; j < i+3; j++) Set(j,0); } /* else if (countbroke == 1){ int before = 0; if (X >= pow){ X -= pow; before = 1; } pow /= 2; if (broke[i]){ Set(i,0); Set(i+1,before); Set(i+2,!before); } if (broke[i+1]){ Set(i,before); Set(i+1,0); Set(i+2,!before); } if (broke[i+2]){ Set(i,before); Set(i+1,!before); Set(i+2,0); } }*/ else{ //cout << "hi\n"; int num1 = 0,num2 = 0; if (X >= pow){ X -= pow; num1 = 1; } pow /= 2; if (X >= pow){ X -= pow; num2 = 1; } pow /= 2; //cout << num1 << " " << num2 << "\n"; if (num1 && num2){ Set(i,1); Set(i+1,1); Set(i+2,1); } else if (num1){ Set(i,1); Set(i+1,1); Set(i+2,0); } else if (num2){ Set(i,1); Set(i+1,0); Set(i+2,1); } else{ Set(i,0); Set(i+1,1); Set(i+2,1); } } } }
#include "Brunolib.h" long long Bruno( int N, int A[] ){ long long pow = 1; for (int i = 0; i < 59; i++) pow*= 2; long long ans = 0; for (int i = 0; i < N; i+= 3){ int temp = A[i]+A[i+1]+A[i+2]; if (temp == 0) continue; if (A[i] && A[i+1] && A[i+2]){ ans += pow; pow/=2; ans += pow; pow/=2; } else if (A[i] && A[i+1]){ ans += pow; pow/=4; } else if (A[i] && A[i+2]){ pow/=2; ans += pow; pow/=2; } else{ pow/=4; } // cout << ans << "\n"; } // cout << "hi\n"; return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...