Submission #41199

#TimeUsernameProblemLanguageResultExecution timeMemory
41199IvanCSequence (BOI14_sequence)C++14
34 / 100
1063 ms876 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = 1e5 + 10; int K,vetor[MAXN],freq[10][2]; int check(int ini){ for(int i = ini + K - 1,ptr = 1;ptr <= K;i--,ptr++){ if(i == 0 && vetor[K - ptr + 1] == 0) continue; int copia = i; while(copia != 0 && copia % 10 != vetor[K - ptr + 1]) copia /= 10; if(copia == 0) return 0; } return 1; } void adiciona(int v){ while(v != 0){ freq[v % 10][0]++; v /= 10; } } void tira(int v){ while(v != 0){ freq[v % 10][0]--; v /= 10; } } int prune(){ for(int i = 0;i<=9;i++){ if(freq[i][0] < freq[i][1]) return 0; } return 0; } int main(){ cin >> K; for(int i = 1;i<=K;i++){ cin >> vetor[i]; freq[vetor[i]][1]++; } if(K <= 1000){ for(int i = 1;i<=K;i++) adiciona(i); for(int i = 1;i<=1000000;i++){ if(prune()){ adiciona(i+K); tira(i); } if(check(i)){ cout << i << endl; return 0; } adiciona(i+K); tira(i); } } if(vetor[1] == 9){ int geratriz = 8; while(true){ if(check(geratriz + 1)){ cout << geratriz + 1 << endl; return 0; } geratriz *= 10; geratriz += 8; } } else if(vetor[1] == 0){ int ini = 1; while(true){ if(check(ini)){ cout << ini << endl; return 0; } ini *= 10; } } else{ int ini = vetor[1]; while(true){ if(check(ini)){ cout << ini << endl; return 0; } ini *= 10; } } 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...