Submission #1298560

#TimeUsernameProblemLanguageResultExecution timeMemory
1298560thaibeo123 Martian DNA (BOI18_dna)C++20
100 / 100
154 ms141264 KiB
#include <bits/stdc++.h> using namespace std; #define NAME "A" #define ll long long #define fi first #define se second #define pb push_back #define all(x) x.begin(), x.end() #define MASK(x) (1ll << (x)) #define BIT(x, i) (((x) >> (i)) & 1) const int N = 2e5 + 5; const int inf = 1e9; int n, k, r; int a[N], val[N]; deque<int> dq[N]; multiset<int> s; void input() { cin >> n >> k >> r; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 1; i <= r; i++) { int b; cin >> b; cin >> val[b]; } } void solve() { int ans = inf; for (int i = 1; i <= n; i++) { if (val[a[i]] == 0) continue; dq[a[i]].push_back(i); if ((int)dq[a[i]].size() > val[a[i]]) { s.erase(s.find(dq[a[i]].front())); dq[a[i]].pop_front(); s.insert(dq[a[i]].front()); } else if ((int)dq[a[i]].size() == val[a[i]]) { s.insert(dq[a[i]].front()); } //cout << i << " " << s.size() << " " << dq[a[i]].size() << "\n"; if ((int)s.size() == r) { ans = min(ans, i - *s.begin() + 1); } } if (ans == inf) { cout << "impossible"; return; } cout << ans; } signed main() { if (fopen(NAME".INP", "r")) { freopen(NAME".INP", "r", stdin); freopen(NAME".OUT", "w", stdout); } cin.tie(0)->sync_with_stdio(0); int t = 1; //cin >> t; while (t--) { input(); solve(); } return 0; }

Compilation message (stderr)

dna.cpp: In function 'int main()':
dna.cpp:60:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   60 |         freopen(NAME".INP", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
dna.cpp:61:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   61 |         freopen(NAME".OUT", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...