Submission #63913329
Source Code Expand
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f3f3f3f3fll
#define debug(x) cerr<<#x<<"="<<x<<endl
using namespace std;
using ll=long long;
using ld=long double;
using pli=pair<ll,int>;
using pi=pair<int,int>;
template<typename A>
using vc=vector<A>;
template<typename A,const int N>
using aya=array<A,N>;
inline int read()
{
int s=0,w=1;char ch;
while((ch=getchar())>'9'||ch<'0') if(ch=='-') w=-1;
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
inline ll lread()
{
ll s=0,w=1;char ch;
while((ch=getchar())>'9'||ch<'0') if(ch=='-') w=-1;
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
char a[1000005];
char b[1000005];
int n;
inline vc<int>run (vc<int>A,int X)
{
vc<int>ans;int lst=-0x3f3f3f3f;
for(int p:A)
{
p=p<X?p+1:(p==X?p:(p-1));
if(p!=lst) ans.push_back(p),lst=p;
}
return ans;
}
inline int get(vc<int>A,vc<int>B)
{
int cnt=(A.back()-A[0])-(B.back()-B[0]);
if((cnt&1)||cnt<0) return 0x3f3f3f3f;
cnt>>=1;
int ans=cnt+abs(B[0]-(A[0]+cnt));
unsigned now=0;//匹配到 B 的哪个位置了
for(unsigned i=1;i<A.size()&&now+1<B.size();i++)
{
int len=A[i]-A[i-1],lenB=B[now+1]-B[now];
if(len>lenB||(len==lenB&&(A[i-1]+A[0]+B[now]+B[0])%2==0)) now++;
}
return now+1<B.size()?0x3f3f3f3f:ans;
}
inline void solve()
{
n=read();scanf("%s%s",a+1,b+1);vc<int>A,B;
for(int i=1;i<=n;i++)
{
if(a[i]=='1') A.push_back(i);
if(b[i]=='1') B.push_back(i);
}
if(A.size()==1)
{
if(B.size()>1) printf("-1\n");
else printf("%d\n",abs(B[0]-A[0]));
return ;
}
int ans=0x3f3f3f3f;
for(int L=0;L<2;L++) for(int R=0;R<2;R++)
{
vc<int>C=A;
if(L) C=run(C,C[0]);
if(R) C=run(C,C.back());
ans=min(ans,get(C,B)+L+R);
// printf("L=%d R=%d : %d\n",L,R,get(C,B));
}
printf("%d\n",ans==0x3f3f3f3f?-1:ans);
}
int main()
{
int T=read();
while(T--) solve();
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | D - Magnets |
| User | shijiuwan |
| Language | C++ 20 (gcc 12.2) |
| Score | 1000 |
| Code Size | 1922 Byte |
| Status | AC |
| Exec Time | 128 ms |
| Memory | 32948 KiB |
Compile Error
Main.cpp: In function ‘void solve()’:
Main.cpp:58:23: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
58 | n=read();scanf("%s%s",a+1,b+1);vc<int>A,B;
| ~~~~~^~~~~~~~~~~~~~~~
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 1000 / 1000 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | example0.txt |
| All | 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, 034.txt, 035.txt, 036.txt, 037.txt, 038.txt, 039.txt, 040.txt, 041.txt, 042.txt, 043.txt, 044.txt, 045.txt, 046.txt, 047.txt, 048.txt, 049.txt, 050.txt, 051.txt, 052.txt, 053.txt, 054.txt, 055.txt, 056.txt, 057.txt, 058.txt, 059.txt, 060.txt, 061.txt, 062.txt, 063.txt, 064.txt, 065.txt, 066.txt, 067.txt, 068.txt, 069.txt, 070.txt, 071.txt, 072.txt, 073.txt, 074.txt, 075.txt, 076.txt, 077.txt, 078.txt, 079.txt, 080.txt, 081.txt, 082.txt, 083.txt, 084.txt, 085.txt, 086.txt, 087.txt, 088.txt, 089.txt, 090.txt, 091.txt, 092.txt, 093.txt, 094.txt, 095.txt, example0.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 000.txt | AC | 109 ms | 3728 KiB |
| 001.txt | AC | 31 ms | 3672 KiB |
| 002.txt | AC | 108 ms | 3600 KiB |
| 003.txt | AC | 80 ms | 3760 KiB |
| 004.txt | AC | 128 ms | 3636 KiB |
| 005.txt | AC | 6 ms | 5752 KiB |
| 006.txt | AC | 6 ms | 5588 KiB |
| 007.txt | AC | 40 ms | 28892 KiB |
| 008.txt | AC | 9 ms | 9364 KiB |
| 009.txt | AC | 33 ms | 28768 KiB |
| 010.txt | AC | 9 ms | 9440 KiB |
| 011.txt | AC | 33 ms | 28776 KiB |
| 012.txt | AC | 9 ms | 9412 KiB |
| 013.txt | AC | 32 ms | 18924 KiB |
| 014.txt | AC | 30 ms | 18844 KiB |
| 015.txt | AC | 48 ms | 32680 KiB |
| 016.txt | AC | 30 ms | 18828 KiB |
| 017.txt | AC | 31 ms | 18824 KiB |
| 018.txt | AC | 47 ms | 32820 KiB |
| 019.txt | AC | 4 ms | 4944 KiB |
| 020.txt | AC | 24 ms | 14684 KiB |
| 021.txt | AC | 11 ms | 8060 KiB |
| 022.txt | AC | 22 ms | 13688 KiB |
| 023.txt | AC | 4 ms | 5008 KiB |
| 024.txt | AC | 33 ms | 18892 KiB |
| 025.txt | AC | 32 ms | 18796 KiB |
| 026.txt | AC | 33 ms | 18820 KiB |
| 027.txt | AC | 32 ms | 18832 KiB |
| 028.txt | AC | 33 ms | 18956 KiB |
| 029.txt | AC | 10 ms | 7388 KiB |
| 030.txt | AC | 22 ms | 13816 KiB |
| 031.txt | AC | 25 ms | 15388 KiB |
| 032.txt | AC | 19 ms | 13844 KiB |
| 033.txt | AC | 25 ms | 17648 KiB |
| 034.txt | AC | 8 ms | 6564 KiB |
| 035.txt | AC | 21 ms | 15732 KiB |
| 036.txt | AC | 25 ms | 15624 KiB |
| 037.txt | AC | 35 ms | 21216 KiB |
| 038.txt | AC | 12 ms | 8208 KiB |
| 039.txt | AC | 15 ms | 9496 KiB |
| 040.txt | AC | 18 ms | 10960 KiB |
| 041.txt | AC | 8 ms | 6448 KiB |
| 042.txt | AC | 17 ms | 10920 KiB |
| 043.txt | AC | 11 ms | 7948 KiB |
| 044.txt | AC | 11 ms | 8036 KiB |
| 045.txt | AC | 13 ms | 10340 KiB |
| 046.txt | AC | 15 ms | 10676 KiB |
| 047.txt | AC | 42 ms | 26532 KiB |
| 048.txt | AC | 41 ms | 27812 KiB |
| 049.txt | AC | 49 ms | 32324 KiB |
| 050.txt | AC | 40 ms | 23584 KiB |
| 051.txt | AC | 30 ms | 19024 KiB |
| 052.txt | AC | 41 ms | 29264 KiB |
| 053.txt | AC | 40 ms | 27928 KiB |
| 054.txt | AC | 39 ms | 28696 KiB |
| 055.txt | AC | 34 ms | 23448 KiB |
| 056.txt | AC | 25 ms | 15756 KiB |
| 057.txt | AC | 22 ms | 13684 KiB |
| 058.txt | AC | 27 ms | 17296 KiB |
| 059.txt | AC | 30 ms | 16540 KiB |
| 060.txt | AC | 23 ms | 14236 KiB |
| 061.txt | AC | 25 ms | 14252 KiB |
| 062.txt | AC | 29 ms | 15192 KiB |
| 063.txt | AC | 22 ms | 14736 KiB |
| 064.txt | AC | 10 ms | 7228 KiB |
| 065.txt | AC | 49 ms | 32784 KiB |
| 066.txt | AC | 6 ms | 5896 KiB |
| 067.txt | AC | 31 ms | 19024 KiB |
| 068.txt | AC | 31 ms | 18852 KiB |
| 069.txt | AC | 16 ms | 11848 KiB |
| 070.txt | AC | 6 ms | 5756 KiB |
| 071.txt | AC | 15 ms | 9872 KiB |
| 072.txt | AC | 33 ms | 18548 KiB |
| 073.txt | AC | 47 ms | 31272 KiB |
| 074.txt | AC | 6 ms | 5680 KiB |
| 075.txt | AC | 8 ms | 6332 KiB |
| 076.txt | AC | 15 ms | 9636 KiB |
| 077.txt | AC | 21 ms | 14960 KiB |
| 078.txt | AC | 6 ms | 5680 KiB |
| 079.txt | AC | 20 ms | 12368 KiB |
| 080.txt | AC | 26 ms | 14908 KiB |
| 081.txt | AC | 49 ms | 32832 KiB |
| 082.txt | AC | 49 ms | 32948 KiB |
| 083.txt | AC | 30 ms | 18936 KiB |
| 084.txt | AC | 6 ms | 5616 KiB |
| 085.txt | AC | 6 ms | 5540 KiB |
| 086.txt | AC | 49 ms | 32384 KiB |
| 087.txt | AC | 48 ms | 32376 KiB |
| 088.txt | AC | 30 ms | 18900 KiB |
| 089.txt | AC | 30 ms | 18976 KiB |
| 090.txt | AC | 6 ms | 5696 KiB |
| 091.txt | AC | 6 ms | 5796 KiB |
| 092.txt | AC | 42 ms | 30932 KiB |
| 093.txt | AC | 41 ms | 30784 KiB |
| 094.txt | AC | 6 ms | 5588 KiB |
| 095.txt | AC | 6 ms | 5584 KiB |
| example0.txt | AC | 1 ms | 3812 KiB |