Title | codechef code for practice |
---|---|
Author | Anonymous User |
Course | Computer science engneering |
Institution | Chandigarh University |
Pages | 7 |
File Size | 103 KB |
File Type | |
Total Downloads | 191 |
Total Views | 461 |
The Next Big ThingCODE#include <bits/stdc++.h> using namespace std;vector<int> NGE(vector<int> v) { vector<int> nge(v()); stack<int> st; for (int i = 0; i < v(); i++) { while ((!st()) && (v[i] > v[st()])) { nge[st()] = i; st(); } st(i); } while (!st()) { n...
TheNextBi gThi ng CODE #include using namespace std;
vector NGE(vector v) { vector nge(v.size()); stack st; for (int i = 0; i < v.size(); i++) { while ((!st.empty()) && (v[i] > v[st.top()])) { nge[st.top()] = i; st.pop(); } st.push(i); } while (!st.empty()) { nge[st.top()] = -1; st.pop(); } return nge; }
int main()
{ int n, i; cin >> n; vector vect; for (int i = 0; i < n; i++) { int x; cin >> x; vect.push_back(x); } vector nge = NGE(vect); for (i = 0; i < n; i++) cout a[i]
#define vi vector #define si set #define pii pair #define sii set #define vii vector #define mii map #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL) using namespace std; using namespace chrono; /* ---------------------------------------------------------------------Things to remember : check for coners n = 1, pass references instead */ /* -------------------------------Solution Sarted--------------------------------------*/
//Constants const int MOD = 1000000007; // 1e9 + 7 const int MAXN = 1000005; // 1e6 +5 const int INF = 100000000000005; // 1e15 +5
vi dist;
set q;
void bfsutil(vi adj[], int s){ set::iterator it;
for (int i = 0; i < adj[s].size(); i++){ int v = adj[s][i];
if (dist[s] + 1 < dist[v]){
it = q.find({ dist[v], v }); q.erase(it); dist[v] = dist[s] + 1; q.insert({ dist[v], v }); } }
if (q.size() == 0) return;
it = q.begin(); int next = it->second; q.erase(it);
bfsutil(adj, next); }
void bfs(vi adj[], int n, vi &s, int k){ vi source(n +1, 0);
for (int i = 0; i < k; i++) source[s[i]] = 1;
for (int i = 1; i second;
bfsutil(adj, start); }
void solve(){ int n, m, k, u, v, q; cin >> n >> m >> k;
vi adj[n +1], special(k);
for(int i = 0; i < m; ++i){ cin >> u >> v; adj[u].push_back(v); adj[v].push_back(u); }
for(int i = 0; i < k; ++i){ cin >> special[i]; }
dist = vi(n +1, INF); bfs(adj, n, special, k);
cin >> q; while(q--){ cin >> u; cout = INF ? -1 : dist[u]) > t; while(t--) solve(); return 0; }
INPUT1 5 3 3 1 2 1 3
2 3 1 3 5 5 1 2 3 4 5...