Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
30342 LYLAKIOI 【S】T1 C++ 通过 100 61 MS 28412 KB 1813 2024-06-23 18:37:47

Tests(20/20):


#include<bits/stdc++.h> #define up(i,l,r) for(int i=(l);i<=(r);++i) #define down(i,l,r) for(int i=(l);i>=(r);--i) #define p_b push_back #define pi pair<int,int> #define p1 first #define p2 second #define m_p make_pair using namespace std; typedef long long ll; const int maxn=2e5+10; inline ll read(){ ll x=0;short t=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')t=-1;ch=getchar();} while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*t; } int n,m,B; vector<pi>v[maxn]; int deg1[maxn],deg2[maxn]; int st[maxn]; stack<int>P; void dfs(int u){ int sz=v[u].size(); for(int i=st[u];i<sz;i=st[u]){ st[u]=i+1; dfs(v[u][i].p1); P.push(v[u][i].p2); } } void slv(){ n=read(),m=read(),B=read(); up(i,1,n){ string s;cin>>s; int w=0;up(i,0,int(s.length())-1)if(s[i]=='1')w=i%m; up(i,0,int(s.length())-1)if((i%m==w&&s[i]=='0')||(i%m!=w&&(s[i]=='1'))){ printf("-1");return; } int val=(B-w+m)%m; int to=(val+int(s.length()))%m; v[val].p_b(m_p(to,i)); deg1[val]++,deg2[to]++; } int S=0,T=0; up(i,1,n){ if(deg1[i]==deg2[i])continue; if(deg1[i]>deg2[i]){ if(deg1[i]!=deg2[i]+1){printf("-1\n");return;} if(S){printf("-1\n");return;}S=i; }else { if(deg2[i]==deg1[i]+1){printf("-1\n");return;} if(T){printf("-1\n");return;}T=i; } } if(S&&(!T)){printf("-1\n");return;}if(T&&(!S)){printf("-1\n");return;} dfs(S); while(!P.empty())printf("%d ",P.top()),P.pop(); }int main(){ // freopen("card.in","r",stdin); // freopen("card.out","w",stdout); slv(); fclose(stdin); fclose(stdout); return 0; }


测评信息: