木の性質
木は直径の部分にいっぱいくっつけたものと思っとけばいい
解説を見た
- #include<iostream>
- #include<algorithm>
- #define lol(i,n) for(int i=0;i<n;i++)
- using namespace std;
- int n,a[110],cnt[110];
- int main(){
- cin>>n;
- lol(i,n)cnt[i]=0;
- int maxi=0;
- lol(i,n){
- cin>>a[i];
- cnt[a[i]]++;
- maxi=max(maxi,a[i]);
- }
- bool ok=true;
- for(int i=0;i<(maxi+1)/2;i++)if(cnt[i]>0)ok=false;
- if(maxi%2==0&&cnt[(maxi+1)/2]!=1)ok=false;
- if(maxi%2==1&&cnt[(maxi+1)/2]!=2)ok=false;
- for(int i=(maxi+1)/2+1;i<=maxi;i++)if(cnt[i]<2)ok=false;
- cout<<(ok?"Possible":"Impossible")<<endl;;
- return 0;
- }
700点チャレンジ2問目