AT1716 袋とボール题解
题目传送门
思路:
- 若 \(A\) 袋有一个数等于 \(C\),那么答案就包含着 \(B\) 袋中的两个数;
- 若 \(B\) 袋有一个数等于 \(C\),那么答案就包含着 \(A\) 袋中的两个数;
当然,还要将答案排序并去重,需要用 algorithm
库中的 sort
和 unique
这两个函数。
就这样,我们就顺利地 AC
了!
代码如下
//#include<bits/stdc++.h>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int INF=0x3f3f3f3f,MOD=1e9+7;
#define pu putchar
#define endl puts("")
//#define int __int128
//#define int long long
#define rep(i,l,r) for(int i=l;i<=r;++i)
#define per(i,r,l) for(int i=r;i>=l;--i)
#define me0(a); memset(a,0,sizeof a);
#define me3(a); memset(a,0x3f,sizeof a);
#define PII pair<int,int>
void read(int &n){char c,w=1;for(;48>c||c>57;c=getchar())
w=c==45?-1:1;for(n=0;47<c&&c<58;c=getchar())n=n*10+c-48;n*=w;
}void write(int x){if(x<0)pu(45),x=-x;char c[41],s=0;
for(;x;)c[s++]=x%10,x/=10;if(!s)pu(48);for(;s--;)pu(c[s]+48);
}void debug(int n){printf("\tdebug:\t"); write(n); pu('\t');}
const int MAXN=2e5+10;
int a1,a2,b1,b2,c,a[10],tot;
signed main(){
read(a1); read(a2); read(b1); read(b2); read(c);
if(c==a1||c==a2){
a[++tot]=b1; a[++tot]=b2;
}if(c==b1||c==b2){
a[++tot]=a1; a[++tot]=a2;
}sort(a+1,a+tot+1);
tot=a[0]=unique(a+1,a+tot+1)-a-1;
rep(i,0,tot){
write(a[i]); endl;
}
}