NC219164. 小Q与异或
描述
输入描述
输入第一行有两个整数 ,表示序列的长度与式子的个数。
接下来 行,每行有两个整数,分别表示每个式子的参数 。
输出描述
本题将会使用 Special Judge。只有一行包含 个整数,表示序列 。
示例1
输入:
5 2 1 2 3 4
输出:
2 2 4 1 1
说明:
示例2
输入:
6 1 2 4
输出:
6 2 4 3 1 4
示例3
输入:
2 2 1 2 2 2
输出:
-1
C++(clang++11) 解法, 执行用时: 363ms, 内存消耗: 18424K, 提交时间: 2021-04-25 20:48:38
#include <bits/stdc++.h> using namespace std; int i,k,n,m,a[1000050],b[1000050],tmp,nmsl; int main(){ srand(time(0)); scanf("%d%d",&n,&m); for(i=1;i<=n;i++){ a[i]=-1; } for(i=1;i<=m;i++){ scanf("%d%d",&k,&nmsl); if(a[k]!=-1&&a[k]!=nmsl){puts("-1");return 0;} a[k]=nmsl; } for(i=1;i<=n;i++){ if(tmp==a[i]){puts("-1");return 0;} if(a[i]==-1){b[i]=rand();} else{b[i]=tmp^a[i];}tmp^=b[i]; } printf("%d",b[1]); for(i=2;i<=n;i++){ printf(" %d",b[i]); } }