Submission #1213660

#TimeUsernameProblemLanguageResultExecution timeMemory
1213660thelegendary08Ancient Machine (JOI21_ancient_machine)C++17
0 / 100
53 ms8504 KiB
#include "Anna.h" #include<bits/stdc++.h> #define f0r(i,n) for(int i = 0; i < n; i++) #define mp make_pair #define pb push_back #define pii pair<int,int> #define vi vector<int> #define vb vector<bool> #define FOR(i, k, n) for(int i = k; i<n; i++) using namespace std; namespace { // int variable_example = 0; } void Anna(int N, std::vector<char> S) { f0r(i, N){ if(S[i] == 'X'){ Send(0); Send(0); } else if(S[i] == 'Y'){ Send(0); Send(1); } else{ Send(1); Send(1); } } return; }
#include "Bruno.h" #include<bits/stdc++.h> #define f0r(i,n) for(int i = 0; i < n; i++) #define mp make_pair #define pb push_back #define pii pair<int,int> #define vi vector<int> #define vb vector<bool> #define FOR(i, k, n) for(int i = k; i<n; i++) #define vpii vector<pair<int,int>> using namespace std; namespace { // int variable_example = 0; // int FunctionExample(int P) { return 1 - P; } } // namespace void Bruno(int N, int L, std::vector<int> A) { vi v; for(int i = 0; i<2 * N; i+=2){ if(A[i] + A[i+1] == 0)v.pb(0); else if(A[i] + A[i+1] == 1)v.pb(1); else v.pb(2); } vi a,b,c; f0r(i, N){ if(v[i] == 0)a.pb(i); else if(v[i] == 1)b.pb(i); else c.pb(i); } vi ma(a.size(), -1); int p1 = 0; int p2 = 0; while(p1 < a.size()){ while(p2 < b.size() && b[p2] < a[p1])p2++; if(p2 != b.size()){ ma[p1] = p2; } p1++; } vi mb(b.size(), -1); p1 = 0; p2 = 0; while(p1 < b.size()){ while(p2 < c.size() && c[p2] < b[p1])p2++; if(p2 != c.size())mb[p1] = p2; p1++; } vector<pair<pii,int>> ranges; f0r(i, a.size()){ if(ma[i] != -1 && mb[ma[i]] != -1)ranges.pb(mp(mp(c[mb[ma[i]]], a[i]), b[ma[i]])); } sort(ranges.begin(), ranges.end()); vb vis(N); int ce = -1; f0r(i, ranges.size()){ if(ranges[i].first.second > ce){ FOR(j, ranges[i].first.second + 1, ranges[i].second){ if(!vis[j]){ Remove(j); vis[j] = 1; } } FOR(j, ranges[i].second + 1, ranges[i].first.first){ if(!vis[j]){ Remove(j); vis[j] = 1; } } Remove(ranges[i].second); vis[ranges[i].second] = 1; ce = ranges[i].first.first; } } f0r(i, N){ if(!vis[i])Remove(i); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...