# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
575571 | 2022-06-11T05:16:39 Z | Arvin | Ancient Machine (JOI21_ancient_machine) | C++17 | 50 ms | 8084 KB |
#include "Anna.h" #include <bits/stdc++.h> using namespace std; #define ll long long namespace { int variable_example = 0; const int maxN = 1e5 + 5; } void Anna(int N, std::vector<char> S) { // 1 as store this first X or any Z after first Xa // 0 otherwise vector<int> v; int pos = -1; bool fX = false; for(int x=0;x<N;x++){ if(S[x] == 'Z'){ if(fX && (x-1 > pos) && (x+1 == N || S[x+1] != 'Z')){ v.push_back(1); } else { v.push_back(0); } // Send(fX); } else if(S[x] == 'Y'){ // Send(0); v.push_back(0); } else if(S[x] == 'X'){ if(!fX){ v.push_back(1); // Send(1); fX = true; pos = x; } else { v.push_back(0); // Send(0); } } } // guaranteed bit 1 at most N/2 + 1 // alternating, only special case where first X and any Z are adjacent. // first 16 bits are location of first X // if not exist: ok delete all // else : // check first bit after loc // if 0 length is odd // - if one: // - - // - else: pos++; for(int y=0;y<17;y++){ if(pos&(1 << y)){ Send(1); } else { Send(0); } } if(pos == 0){ return; } ll cnt[51]; ll sum = 2; ll table[51]; table[0] = 1; cnt[0] = 1; table[1] = 1; cnt[1] = 2; for(int x=2;x<=50;x++){ table[x] = 0; for(int y=0;y<=x-2;y++){ table[x] += table[y]; } sum += table[x]; cnt[x] = sum; } // cout << "... " << pos << "\n"; while(pos < v.size()){ ll val = 0; for(int x=49;x>=0;x--){ if(pos+x < N && v[pos+x] == 1){ val += cnt[x]; } } for(int y=0;y<29;y++){ if(val&(1 << y)){ Send(1); } else { Send(0); } } pos += 50; } // Send(v[0]); // bool skip = false; // for(int x=0;x<N;x++){ // if(skip){ // skip = false; // continue; // } // if(v[x] == 0){ // if(x+1 == N || v[x+1] == 1){ // Send(0); // if(x+1 < N && v[x+1] == 1) Send(1); // else Send(0); // } else { // Send(1); // if(x+2 < N && v[x+2] == 1){ // Send(1); // } else { // Send(0); // } // skip = true; // } // } // } }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 508 KB | Output is correct |
2 | Correct | 0 ms | 508 KB | Output is correct |
3 | Correct | 0 ms | 516 KB | Output is correct |
4 | Correct | 0 ms | 516 KB | Output is correct |
5 | Correct | 0 ms | 508 KB | Output is correct |
6 | Correct | 0 ms | 508 KB | Output is correct |
7 | Correct | 1 ms | 508 KB | Output is correct |
8 | Correct | 0 ms | 508 KB | Output is correct |
9 | Correct | 0 ms | 508 KB | Output is correct |
10 | Correct | 0 ms | 516 KB | Output is correct |
11 | Correct | 0 ms | 516 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 50 ms | 8084 KB | Wrong Answer [6] |
2 | Halted | 0 ms | 0 KB | - |