Submission #30717

#TimeUsernameProblemLanguageResultExecution timeMemory
30717okaybody10이상한 수열 (OJUZ10_bizarre)C++98
76 / 100
19 ms4080 KiB
#include <stdio.h> #include <vector> #define MAXN 1000000 using namespace std; bool check[2000001]; int main() { // M이 S보다 작을때까지는 수열은 S의 수열을 따를것이므로 bool check해서 그걸 기록해놓는다. // 그 외의 경우에는, 즉 M이 S보다 큰 경우에는 S+1번째 항 부터 다른 것의 횟수 cnt, cnt+1, ... 이걸 bool형에 check해나가면서 ++한다. // 만약 한번이라도 bool[now]가 있다면, 그건 무조건적으로 cnt에 멈추게 된다. // for돌면서 하면 된다. // Si 최대 범위가 -100만에서 100만이므로, 걍 수를 받아들이면 +100한 수가 존재하는지 본다. bool형이므로 노상관 ㅋ int N,maxval=1e9-1,diff=0; scanf("%d",&N); vector<int> S(N); for(int i=0;i<N;i++) { scanf("%d",&S[i]); if(!check[S[i]+MAXN]) diff++; check[S[i]+MAXN]=true; } int M; scanf("%d",&M); for(int i=MAXN;i<=2*MAXN;i++) { if(check[i] && diff<(i-MAXN)) { maxval=i-MAXN; break; } } if(M<=N) printf("%d",S[M-1]); else if(maxval>M) printf("%d",M-(N+1)+diff); else printf("%d",maxval); }

Compilation message (stderr)

bizarre.cpp: In function 'int main()':
bizarre.cpp:14:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&N);
                   ^
bizarre.cpp:18:26: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&S[i]);
                          ^
bizarre.cpp:24:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&M);
                   ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...