Submission #1144071

#TimeUsernameProblemLanguageResultExecution timeMemory
1144071agrim_09Solar Storm (NOI20_solarstorm)C++20
Compilation error
0 ms0 KiB
// THIS IS NOT MY CODE (SOURCE : OFFICIAL SOLN OF NOI 2020) // I AM USING THIS TO CHECK MY IMPLEMENTATION ERROR // #pragma GCC optimize("O3,unroll-loops") // #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace std; using namespace __gnu_pbds; template <class T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; #define endl '\n'; #define fastio ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); #define py cout << "YES" << endl; #define pn cout << "NO" << endl; #define pb push_back #define int long long typedef long double lld; #define double lld typedef long long ll; typedef unsigned long long ull; const ll inf = 1e18; const ll mod = 1e9+7; const int N = 1e6+5; vector<int>primes = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97}; // Check for queue, priorioty_queue, stack, ordered_set solutions // stack => LIFO (whatever goes in last comes out last) // queue => FIFO (whatever goes in first comes out first) // priority_queue => Dynamic queries of minimum/maximum // ordered_set => set in vector form //[order_of_key(k) gives number of elements less than k, while find_by_order(i) gives i^th element] // To comment multiple lines : ctrl + / // To find and replace : ctrl+H void judge(){ srand(time(NULL)); #ifndef ONLINE_JUDGE freopen("1.txt","r",stdin); freopen("2.txt","w",stdout); freopen("Error.txt", "w", stderr); #define debug(x...) cerr << #x <<" = "; _print(x); cerr << endl; #else #define debug(x...) #endif } void usaco(string s) { freopen((s + ".in").c_str(),"r",stdin); freopen((s + ".out").c_str(),"w",stdout); } int A[N], prefix[N]; int V[N]; int nxt[N], before[N], parent[N]; vector<vector<int>> adj; int n, d, ans_start; int ans = 0; vector<int>v; void dfs(int node, int par, vector<vector<int>>&list){ if(node!=n ){ int x = v.size(); int p = x - d; p = max(p,0LL); int x = v[p]; if(x>ans){ ans = x, ans_start = node; } } v.pb(node); for(auto child : list[node]){ if(child==par){ continue; } dfs(child,node,list); } v.pop_back(); } signed main(){ fastio; //judge(); adj.resize(N); int diff; int k; cin>>n>>d>>k; A[0] = 0; for(int i = 1; i < n; i++) { cin>>diff; A[i] = A[i - 1] + diff; } for(int i = 0; i < n; i++) { cin>>V[i]; prefix[i] = (i == 0 ? 0 : prefix[i - 1]) + V[i]; } prefix[n] = prefix[n - 1]; A[n] = A[n - 1] + 2*k; int current_ptr = 0; nxt[n] = n; for(int i = 0; i < n; i++) { for(int j = current_ptr; j <= n; j++) { if(A[j] - A[i] > k) { current_ptr = j; nxt[i] = j; break; } } } current_ptr = n; for(int i = n; i >= 0; i--) { for(int j = current_ptr; j >= -1; j--) { if(j == -1 or A[i] - A[j] > k) { current_ptr = j; before[i] = j; break; } } } // for(int i = 0; i < n; i++) cout<<i<<" Before: "<<before[i]<<", Next: "<<nxt[i]<<endl; for(int i = 0; i < n; i++) { int jump_to = nxt[i]; if(jump_to != n) { jump_to = nxt[jump_to] - 1; } //cout<<i<<" --> "<<jump_to<<endl; adj[jump_to].pb(i); adj[i].pb(jump_to); parent[i] = jump_to; } dfs(n,-1,adj); vector<int> Q; for(int i = 0; i < d; i++) { Q.push_back(ans_start); ans_start = parent[ans_start]; if(ans_start == n) break; } cout<<Q.size()<<endl; for(auto v : Q) cout<<v + 1<<" "; cout<<endl; }

Compilation message (stderr)

SolarStorm.cpp: In function 'void dfs(long long int, long long int, std::vector<std::vector<long long int> >&)':
SolarStorm.cpp:68:13: error: redeclaration of 'long long int x'
   68 |         int x = v[p];
      |             ^
SolarStorm.cpp:65:13: note: 'long long int x' previously declared here
   65 |         int x = v.size();
      |             ^
SolarStorm.cpp: In function 'void judge()':
SolarStorm.cpp:40:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   40 |     freopen("1.txt","r",stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~
SolarStorm.cpp:41:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   41 |     freopen("2.txt","w",stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~
SolarStorm.cpp:42:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   42 |     freopen("Error.txt", "w", stderr);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
SolarStorm.cpp: In function 'void usaco(std::string)':
SolarStorm.cpp:50:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   50 |     freopen((s + ".in").c_str(),"r",stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SolarStorm.cpp:51:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   51 |     freopen((s + ".out").c_str(),"w",stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~