CF1073B. Vasya and Books(模擬)
阿新 • • 發佈:2018-12-18
題目連結:http://codeforces.com/contest/1073/problem/B題目:有n本編號為1~n的書放在一個棧裡a[1]是棧頂 a[n]是棧底,然後按照b[1]…b[n]的順序執行操作b[i]將書放進書包裡執行第i個操作時,假設b[i] = x 如果x還在棧a中那麼將a中x及之前所有的書都放進書包裡否則忽視這個操作,求出每一個操作放進書包多少本書。
思路:開標記陣列,暴力模擬即可。
#include <bits/stdc++.h> using namespace std; const int maxn = 2e5+10; int a[maxn], b[maxn],v[maxn], w[maxn]; int main() { int n, cnt = 1; scanf("%d",&n); for(int i = 0; i < n; i++) scanf("%d",&a[i]); for(int i = 0; i < n; i++) scanf("%d",&b[i]); int j = 0; for(int i = 0; i < n; i++) { if(v[b[i]]) continue; while(1) { w[i]++; v[a[j++]]++; if(v[b[i]]) break; } } for(int i = 0; i < n; i++) printf("%d ",w[i]); }