A. Кто напротив?
#include <bits/stdc++.h>
using namespace std;
int main(){
int t;
cin >> t;
while(t--){
int a, b, c, d;
cin >> a >> b >> c;
int n = abs(b-a);
if(b > 2*n || a > 2*n || c > 2*n) cout << -1;
else if(c > n) cout << c-n;
else cout << c+n;
}
}
B. Торт - это ложь
#include <bits/stdc++.h>
using namespace std;
int main(){
int t;
cin >> t;
while(t--){
int n, m, k;
cin >> n >> m >> k;
puts(k == n*m-1 ? "YES" : "NO");
}
}
C. Сережа и контесты
#include <bits/stdc++.h>
using namespace std;
const int N = 4e3 + 5;
bool mk[N];
int x, k, a, b, c, mn, mx, cnt;
int main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> x >> k;
while(k--){
cin >> a >> b;
if(a == 1) cin >> c, mk[c] = 1;
mk[b] = 1;
}
for(int i=1; i<x; i++){
if(!mk[i]) mx++, cnt++;
else mn += ((cnt+1)/2), cnt = 0;
cerr << cnt << '\n';
}
mn += (cnt+1)/2;
cout << mn << ' ' << mx;
}
D. Друзья
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
int r[6] = {0}, cnt = 0;
for(int i=0; i<n; i++){
int a, b;
cin >> a >> b;
r[a]++, r[b]++;
}
for(int i=1; i<6; i++){
if(r[i] != 2) cnt++;
}
if(cnt != 0) cout << "WIN";
else cout << "FAIL";
}
E. Прятки
#include <bits/stdc++.h>
using namespace std;
set< pair<int,int> > s;
int a[100005];
int main(){
int n, k;
cin >> n >> k;
for(int i=1; i<=k; i++){
int t;
cin >> t;
a[t]++;
if(a[t+1]) s.insert({t+1,t});
if(a[t-1]) s.insert({t-1,t});
s.insert({t,t});
}
cout << 3*n-2-s.size() << '\n';
}
F. Детектор фракталов
#include <bits/stdc++.h>
using namespace std;
const int mm=555;
int f[mm][mm][11];
int i,j,k,l,n,m,ans;
char c;
int check(int x,int y,int l){
if(x+l>=n || y+l>=m)return -1;
int d[4]={f[x][y][k-1],f[x][y+l][k-1],f[x+l][y][k-1],f[x+l][y+l][k-1]};
int i, ret, s;
for(i=0; i<4; ++i) if(d[i] < 0) return -1;
for(i=0; i<4; ++i) if(d[i] != 15) break;
if(i == 4) return 15;
s=d[i];
for(ret=i=0; i<4; ++i) if(d[i]!=15){
if(d[i]!=s)return -1;
}
else ret|=1<<i;
if(l!=1&&s!=ret)return -1;
return ret;
}
int main(){
while(~scanf("%d%d",&n,&m))
{
for(i=0;i<n;++i)
for(j=0;j<m;++j)
{
scanf(" %c",&c);
f[i][j][0]=(c=='*')?15:0;
}
ans=0;
for(k=1;(l=(1<<k))<=n&&l<=m;++k)
for(i=0;i<n;++i)
for(j=0;j<m;++j)
ans+=(f[i][j][k]=check(i,j,l>>1))>-1&&k>1;
printf("%d\n",ans);
}
}