Submission #765452

#TimeUsernameProblemLanguageResultExecution timeMemory
765452GrindMachineHidden Sequence (info1cup18_hidden)C++17
100 / 100
102 ms300 KiB
// Om Namah Shivaya #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; template<typename T> using Tree = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; typedef long long int ll; typedef long double ld; typedef pair<int, int> pii; typedef pair<ll, ll> pll; #define fastio ios_base::sync_with_stdio(false); cin.tie(NULL) #define pb push_back #define endl '\n' #define sz(a) a.size() #define setbits(x) __builtin_popcountll(x) #define ff first #define ss second #define conts continue #define ceil2(x, y) ((x + y - 1) / (y)) #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() #define yes cout << "Yes" << endl #define no cout << "No" << endl #define rep(i, n) for(int i = 0; i < n; ++i) #define rep1(i, n) for(int i = 1; i <= n; ++i) #define rev(i, s, e) for(int i = s; i >= e; --i) #define trav(i, a) for(auto &i : a) template<typename T> void amin(T &a, T b) { a = min(a, b); } template<typename T> void amax(T &a, T b) { a = max(a, b); } #ifdef LOCAL #include "debug.h" #else #define debug(x) 42 #endif /* refs: https://codeforces.com/blog/entry/58101?#comment-420242 */ const int MOD = 1e9 + 7; const int N = 1e5 + 5; const int inf1 = int(1e9) + 5; const ll inf2 = ll(1e18) + 5; #include "grader.h" vector<int> findSequence (int n) { int zeros = 0, ones = 0; bool flag = false; rep1(i,n/2+1){ vector<int> v; rep1(j,i) v.pb(0); if(isSubsequence(v)){ zeros++; } else{ flag = true; break; } } if(flag){ ones = n-zeros; } else{ rep1(i,n/2+1){ vector<int> v; rep1(j,i) v.pb(1); if(isSubsequence(v)){ ones++; } else{ flag = true; break; } } assert(flag); zeros = n-ones; } vector<int> ans(n); int lim = n/2+1; rep1(i,ones){ // find the pos of the ith one // a = bef 0, b = bef 1 // c = aft 0, d = aft 1 // when fixing the ith one, we already know the values of b and d // we know the pos of 1 if we know pair (a,d) or (b,c) (some before + some after) // a+b+c+d = n-1 // (a+d) + (b+c) = n-1 // min(a+d, b+c) <= (n-1)/2 // min(a+d+1, b+c+1) <= (n-1)/2 + 1 int b = i-1; int d = ones-i; // first try (a,d) bool found = false; int aa = 0, cc = 0; rep1(a,n){ if(a+d+1 > lim) break; vector<int> v; rep1(j,a) v.pb(0); v.pb(1); rep1(j,d) v.pb(1); bool ok = isSubsequence(v); if(ok){ aa++; } else{ found = true; break; } } int pos = -1; if(found){ pos = aa + (ones-d-1); } else{ // try (b,c) rep1(c,n){ if(b+c+1 > lim) break; vector<int> v; rep1(j,b) v.pb(1); v.pb(1); rep1(j,c) v.pb(0); bool ok = isSubsequence(v); if(ok){ cc++; } else{ found = true; break; } } // assert(found); pos = b + (zeros-cc); } ans[pos] = 1; } return ans; }

Compilation message (stderr)

grader.cpp: In function 'int main()':
grader.cpp:28:26: warning: format '%d' expects argument of type 'int', but argument 3 has type 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wformat=]
   28 |     fprintf (fifo_out, "%d\n", ans.size ());
      |                         ~^     ~~~~~~~~~~~
      |                          |              |
      |                          int            std::vector<int>::size_type {aka long unsigned int}
      |                         %ld
grader.cpp:29:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |     for (int i=0; i<ans.size () && i < N; i++)
      |                   ~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...