#include <iostream>
#include <cstdio>
#include <vector>
#include <utility>
#include <algorithm>
#define foo pair<long long int,long long int>
using namespace std;
int main(){
const double eps = 10e-8;
vector<foo>v;
int t;
scanf("%d",&t);
while(t--) {
int n;
scanf("%d",&n);
if(n < 3) {
long long int x;
while(n--) scanf("%lld %lld",&x,&x);
printf("TAK\n");
} else {
long long int x,y;
while(n--) {
scanf("%lld %lld",&x,&y);
v.push_back(make_pair(x,y));
}
n = v.size();
sort(v.begin(),v.end());
x = v[0].first;
y = v[0].second;
bool collinear = true,constant = true;
for(int i = 1;i<n;++i) {
if(x != v[i].first) collinear = false;
if(y != v[i].second) constant = false;
}
if(collinear || constant) {
printf("TAK\n");
} else {
long long int x1,y1;
for(int i = 1;i<n;++i) {
if(x != v[i].first) {
x1 = v[i].first;
y1 = v[i].second;
}
}
double a = (y - y1)/(x - x1);
double b = y - x*((y - y1)/(x - x1));
collinear = true;
for(int i = 0;i<n;++i) {
if(v[i].second >= a*v[i].first + b - eps && v[i].second <= a*v[i].first + b + eps) {
collinear = true;
} else {
collinear = false;
break;
}
}
if(collinear) {
printf("TAK\n");
} else printf("NIE\n");
}
}
v.clear();
}
return 0;
}
Drobna podpowiedź dlaczego jest WA?