結果
問題 |
No.2759 Take Pictures, Elements?
|
ユーザー |
|
提出日時 | 2024-07-08 20:42:58 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 824 bytes |
コンパイル時間 | 1,300 ms |
コンパイル使用メモリ | 172,968 KB |
実行使用メモリ | 7,848 KB |
最終ジャッジ日時 | 2025-06-20 13:21:48 |
合計ジャッジ時間 | 2,038 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 8 WA * 13 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define rep(i, n) for (int i = 0; i < (int)n; i++) using ll = long long int; int main() { int N, Q; cin >> N >> Q; map<int, vector<int>> A; vector<int> B(Q); rep(i, N) { int Ai; cin >> Ai; A[Ai].push_back(i); } ll c = 0; int pos = 0; rep(i, Q) { int Bi; cin >> Bi; int n = A[Bi].size(); int p = 0; if (n == 1 || pos < A[Bi][0]) p = A[Bi][0]; else if (A[Bi][n - 1] < pos) p = A[Bi][n - 1]; else { vector<int> v = A[Bi]; int pl = lower_bound(v.begin(), v.end(), pos) - v.begin(); int pu = upper_bound(v.begin(), v.end(), pos) - v.begin(); if (abs(pl - pos) < abs(pu - pos)) p = pl; else p = pu; } c += abs(p - pos); pos = p; } cout << c << endl; return 0; }