제출 #129170

#제출 시각아이디문제언어결과실행 시간메모리
129170mahmoudbadawyLamps (JOI19_lamps)C++17
10 / 100
384 ms4912 KiB
#include <bits/stdc++.h> using namespace std; string a,b; int n; int dis[(1<<18)]; int conv(string s) { int res=0; for(int i=0;i<s.size();i++) res=res*2+(s[i]-'0'); return res; } int main() { cin >> n >> a >> b; if(a==string(n,'0')) { int ans[2]={b[0]=='0',b[0]=='1'}; for(int i=1;i<b.size();i++) { if(b[i]!=b[i-1]) ans[b[i]-'0']++; } cout << min(ans[1],1+ans[0]) << endl; return 0; } queue<int> q; q.push(conv(a)); int bb=conv(b); memset(dis,-1,sizeof dis); dis[conv(a)]=0; while(q.size()) { int s=q.front(); q.pop(); if(s==bb) break; for(int i=0;i<n;i++) { int sd=s; for(int j=i;j<n;j++) { sd&=(~(1<<j)); if(dis[sd]!=-1) continue; dis[sd]=dis[s]+1; q.push(sd); } } for(int i=0;i<n;i++) { int sd=s; for(int j=i;j<n;j++) { sd|=(1<<j); if(dis[sd]!=-1) continue; dis[sd]=dis[s]+1; q.push(sd); } } for(int i=0;i<n;i++) { int sd=s; for(int j=i;j<n;j++) { sd^=(1<<j); if(dis[sd]!=-1) continue; dis[sd]=dis[s]+1; q.push(sd); } } } cout << dis[bb] << endl; }

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

lamp.cpp: In function 'int conv(std::__cxx11::string)':
lamp.cpp:12:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<s.size();i++)
              ~^~~~~~~~~
lamp.cpp: In function 'int main()':
lamp.cpp:23:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=1;i<b.size();i++)
               ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...