一直40pts,求助
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5 + 10;
int T;
int n, m;
int p, x;
int a[N], b[N];
bool vis[N];
bool ok;
int pos1, pos2;
bool check(int i) {
if (!vis[i] || !vis[i+1] || !vis[i+2] || !vis[i+3]) return true;
return false;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
cin >> T;
while (T--) {
memset(vis, false, sizeof(vis));
memset(b, 0, sizeof(b));
memset(a, 0, sizeof(a));
pos1 = pos2 = 0;
ok = false;
cin >> n >> m;
if (m == 1 || m == 0) {
cout << "Yes\n";
continue;
}
for (int i=1; i<=m; i++) {
cin >> p >> x;
a[p] = x;
vis[p] = true;
}
for (int i=1; i<=n; i++) {
if (vis[i] != 0 && !pos1) {
pos1 = i;
continue;
}
if (vis[i] != 0 && !pos2) {
pos2 = i;
}
}
if (pos1 == pos2) {
cout << "Yes\n";
continue;
}
int d = (a[pos2] - a[pos1]) / (pos2 - pos1);
b[pos1] = a[pos1];
b[pos2] = a[pos2];
for (int i=pos1-1; i >= 1; i--) {
if (!vis[i]) {
a[i] = a[i+1] - d;
}
b[i] = b[i+1] - d;
}
for (int i=pos1+1; i<=n; i++) {
if (!vis[i]) {
a[i] = a[i-1] + d;
}
b[i] = b[i-1] + d;
}
for (int i=1; i<=n; i++) {
if (a[i] == b[i]) continue;
ok = true;
break;
}
if (ok) {
cout << "No\n";
} else {
cout << "Yes\n";
}
}
return 0;
}