Submission #1028919

#TimeUsernameProblemLanguageResultExecution timeMemory
1028919AdamGSAncient Machine (JOI21_ancient_machine)C++17
100 / 100
41 ms9136 KiB
#include "Anna.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; #define rep(a, b) for(int a = 0; a < (b); ++a) #define st first #define nd second #define pb push_back #define all(a) a.begin(), a.end() void enc(vector<int>P) { vector<ll>ile(51); ile[0]=1; ile[1]=2; for(ll i=2; i<=50; ++i) ile[i]=ile[i-1]+ile[i-2]; for(int i=0; i<P.size(); i+=50) { ll x=0; rep(j, 50) if(P[i+j]) x+=ile[50-j-1]; rep(j, 35) if(x&(1ll<<(ll)j)) Send(1); else Send(0); } } void Anna(int n, vector<char>T) { vector<int>P(n); bool ok=false; rep(i, n) if(T[i]=='X') { ok=true; P[i]=1; for(int j=i+1; j<n; ++j) { if(T[j]=='Z') P[j]=1; } for(int j=n-1; j; --j) if(P[j-1] && P[j]) P[j-1]=0; for(int j=n-1; j>i+1; --j) P[j]=P[j-1]; P[i]=1; P[i+1]=0; break; } while(P.size()%50!=0) P.pb(0); enc(P); }
#include "Bruno.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; #define rep(a, b) for(int a = 0; a < (b); ++a) #define st first #define nd second #define pb push_back #define all(a) a.begin(), a.end() vector<int>dec(vector<int>P, int n) { vector<int>T; vector<ll>ile(51); ile[0]=1; ile[1]=2; for(ll i=2; i<=50; ++i) ile[i]=ile[i-1]+ile[i-2]; for(int i=0; i<P.size(); i+=35) { ll x=0; rep(j, 35) if(P[i+j]) x|=1ll<<(ll)j; rep(j, 50) { if(x>=ile[50-j-1]) { x-=ile[50-j-1]; T.pb(1); if(j+1<50) T.pb(0); ++j; } else T.pb(0); } } rep(i, T.size()) if(T[i]==1) { for(int j=i+2; j<n; ++j) T[j-1]=T[j]; T[n-1]=1; break; } return T; } void Bruno(int n, int m, vector<int>P) { vector<int>T=dec(P, n); int x=-1; rep(i, n) { if(T[i]) { x=i; break; } else Remove(i); } if(x==-1) return; int lst=x; for(int i=x+1; i<n; ++i) if(T[i]) { for(int j=i-1; j>lst; --j) Remove(j); Remove(i); lst=i; } Remove(x); for(int i=lst+1; i<n; ++i) Remove(i); }

Compilation message (stderr)

Anna.cpp: In function 'void enc(std::vector<int>)':
Anna.cpp:15:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   15 |   for(int i=0; i<P.size(); i+=50) {
      |                ~^~~~~~~~~
Anna.cpp: In function 'void Anna(int, std::vector<char>)':
Anna.cpp:23:8: warning: variable 'ok' set but not used [-Wunused-but-set-variable]
   23 |   bool ok=false;
      |        ^~

Bruno.cpp: In function 'std::vector<int> dec(std::vector<int>, int)':
Bruno.cpp:16:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 |   for(int i=0; i<P.size(); i+=35) {
      |                ~^~~~~~~~~
Bruno.cpp:5:36: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    5 | #define rep(a, b) for(int a = 0; a < (b); ++a)
      |                                    ^
Bruno.cpp:28:3: note: in expansion of macro 'rep'
   28 |   rep(i, T.size()) if(T[i]==1) {
      |   ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...