제출 #151859

#제출 시각아이디문제언어결과실행 시간메모리
151859forestryksMatching (CEOI11_mat)C++14
36 / 100
2050 ms44980 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using ld = long double; using pii = pair<int, int>; #define rep(i, n) for (int (i) = 0; (i) < (n); ++(i)) #define all(x) (x).begin(), (x).end() #define FAST_IO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); #define f first #define s second const int MAXN = 1e6 + 5; int m, n; int p[MAXN]; int a[MAXN]; void ps(set<pair<int, int>> &s) { for (auto it : s) { cout << it.f << ' ' << it.s << endl; } cout << endl; } int main() { FAST_IO; cin >> m >> n; rep(i, m) { cin >> p[i]; } rep(i, n) { cin >> a[i]; } set<pair<int, int>> s, s1; rep(i, m) { s.insert({a[i], i}); s1.insert({i, p[i] - 1}); } // ps(s1); vector<int> ans; for (int i = 0; i + m <= n; ++i) { bool ok = true; for (auto it1 = s.begin(), it2 = s1.begin(); it1 != s.end(); it1++, it2++) { if (it1->s - i != it2->s) { ok = false; break; } } if (ok) { ans.push_back(i); } s.erase({a[i], i}); s.insert({a[i + m], i + m}); } cout << ans.size() << endl; for (auto it : ans) { cout << it + 1 << ' '; } cout << endl; }
#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...
#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...