제출 #433749

#제출 시각아이디문제언어결과실행 시간메모리
433749AmineWeslatiPassword (RMI18_password)C++14
30 / 100
345 ms424 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int>vi; #define pb push_back #define sz(x) (int)x.size() #define all(x) begin(x),end(x) typedef string str; #define FOR(i,a,b) for(int i=a; i<b; i++) #define ROF(i,a,b) for(int i=b-1; i>=a; i--) void ckmin(int &x, int y){x=min(x,y);} //------------------------------------ int query(string S); int alp; void upd(str &s, int idx, char c){ str ss; FOR(i,0,sz(s)+1){ if(i==idx) ss+=c; if(i<sz(s)) ss+=s[i]; } s=ss; } bool check(str s, int idx, char c){ str ss; FOR(i,0,idx) ss+=s[i]; ss+=c; int x=sz(ss); FOR(i,idx,sz(s)) if(s[i]==c) ss+=s[i]; return query(ss)==sz(ss); } str guess(int N, int S){ alp=S; vi nb(alp); for(char c='a'; c<=char('a'+alp-1); c++){ str s; FOR(i,0,N) s+=c; nb[c-'a']=query(s); } int idx=0; FOR(i,0,alp) if(nb[i]>nb[idx]) idx=i; str cur; FOR(i,0,nb[idx]) cur+=char(idx+'a'); FOR(i,0,alp) if(i!=idx){ char c=i+'a'; while(nb[i]--){ int l=0,r=sz(cur),ind=-1; while(l<=r){ int m=(l+r)/2; if(check(cur,m,c)){ ind=m; l=m+1; } else r=m-1; } upd(cur,ind,c); } } //cout << sz(cur) << endl; return cur; }

컴파일 시 표준 에러 (stderr) 메시지

password.cpp: In function 'bool check(str, int, char)':
password.cpp:37:9: warning: unused variable 'x' [-Wunused-variable]
   37 |     int x=sz(ss);
      |         ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...