Submission #342562

#TimeUsernameProblemLanguageResultExecution timeMemory
342562dxz05Hedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
0 / 100
39 ms19308 KiB
//#pragma GCC optimize("Ofast") #include <bits/stdc++.h> using namespace std; void debug_out() { cerr << endl; } template<typename Head, typename... Tail> void debug_out(Head H, Tail... T) { cerr << "[" << H << "]"; debug_out(T...); } #ifdef dddxxz #define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__) #else #define debug(...) 42 #endif #define SZ(s) ((int)s.size()) clock_t startTime; double getCurrentTime() { return (double) (clock() - startTime) / CLOCKS_PER_SEC; } typedef long long ll; //mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); const double eps = 0.00001; const int MOD = 1e9 + 7; const int INF = 1000000101; const long long LLINF = 1223372000000000555; const int N = 2e6 + 4e4; const int M = 1234; const int LOG = 19; vector<int> pos[M]; int a[N]; int table[LOG][N], Log[N]; void build_table(int n){ for (int i = 2; i <= n; i++) Log[i] = Log[i / 2] + 1; for (int i = 0; i < LOG; i++){ for (int j = 1; j <= n; j++){ if (i == 0){ table[i][j] = a[j]; } else { int x = j + (1 << (i - 1)); table[i][j] = max(table[i - 1][j], table[i - 1][x]); } } } } int get(int l, int r){ int x = Log[r - l + 1]; return max(table[x][l], table[x][r - (1 << x) + 1]); } void solve(int TC) { int n, q; cin >> n >> q; for (int i = 1; i <= n; i++){ cin >> a[i]; if (a[i] > 1000) return; pos[a[i]].push_back(i); } build_table(n); while (q--){ int l, r, k; cin >> l >> r >> k; bool ok = true; for (int x = 0; x <= 1000; x++){ if (pos[x].empty() || pos[x].back() < l) continue; int ind = upper_bound(pos[x].begin(), pos[x].end(), r) - pos[x].begin() - 1; if (ind < 0 || ind >= pos[x].size()) continue; ind = pos[x][ind]; int y = get(l, ind - 1); if (y > x && x + y > k){ ok = false; break; } } cout << ok << endl; } } int main() { startTime = clock(); ios_base::sync_with_stdio(false); bool llololcal = false; #ifdef dddxxz freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); llololcal = true; #endif int TC = 1; //cin >> TC; for (int test = 1; test <= TC; test++) { debug(test); solve(test); } if (llololcal) cerr << endl << "Time: " << getCurrentTime() * 1000 << " ms" << endl; return 0; }

Compilation message (stderr)

sortbooks.cpp: In function 'void solve(int)':
sortbooks.cpp:82:32: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   82 |             if (ind < 0 || ind >= pos[x].size()) continue;
      |                            ~~~~^~~~~~~~~~~~~~~~
sortbooks.cpp: In function 'int main()':
sortbooks.cpp:18:20: warning: statement has no effect [-Wunused-value]
   18 | #define debug(...) 42
      |                    ^~
sortbooks.cpp:110:9: note: in expansion of macro 'debug'
  110 |         debug(test);
      |         ^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...