Submission #828105

#TimeUsernameProblemLanguageResultExecution timeMemory
828105exodus_ Martian DNA (BOI18_dna)C++14
16 / 100
1475 ms15008 KiB
#include<bits/stdc++.h> #define se second #define fi first using namespace std; const int nmax = 200002; int N,K,R; int arr[nmax]; pair<int,int> terms[nmax]; int countt[101][101][101]={0}; int hit[101]={0}; int main() { cin >> N >> K >> R; for(int i=1; i<=N; i++) { cin >> arr[i]; hit[arr[i]]++; } bool impo=false; for(int i=1; i<=R; i++) { cin >> terms[i].fi >> terms[i].se; if(hit[terms[i].fi]<terms[i].se) impo=true; } if(impo) { cout << "impossible" << endl; return 0; } for(int i=1; i<=N; i++) { for(int j=i; j<=N; j++) { for(int k=i; k<=j; k++) { countt[i][j][arr[k]]++; } } } /*for(int i=1; i<=N; i++) { for(int j=i; j<=N; j++) { for(int k=1; k<=R; k++) { cout << "countt[" << i << "][" << j << "][" << terms[k].fi << "] = " << countt[i][j][terms[k].fi] << endl; } } }*/ int shrtpath = INT_MAX; int k; int bisa; for(int i=1; i<=N; i++) { for(int j=i; j<=N; j++) { bisa=true; k=1; while(k<=R) { if(countt[i][j][terms[k].fi] < terms[k].se) { bisa=false; break; } k++; } if(bisa) { shrtpath = min(shrtpath, (j-i+1)); } } } cout << shrtpath << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...