rt
总不会是题意模拟错了吧 ……真的感觉没问题啊。
考试给出的大样例3过不了,好几个点答案都比正解多1.小样例能过。
求求大佬帮忙看看QAQ
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#include<cmath>
#include<queue>
#define maxn 1000006
using namespace std;
typedef long long ll;
int read() {
int x = 0, f = 1, ch = getchar();
while(!isdigit(ch)) {if(ch == '-') f = -1; ch = getchar();}
while(isdigit(ch)) x = (x << 1) + (x << 3) + ch - '0', ch = getchar();
return x * f;
}
int n = 0, k, T, A[maxn], king[maxn];
struct node {int id, num;} a[maxn];
bool operator < (const node &x, const node &y) {return x.num == y.num? x.id > y.id : x.num > y.num;}
signed main() {
freopen("snakes3.in", "r", stdin);
// freopen("snakes.out", "w", stdout);
T = read();
while(T--) {
k = read();
if(!n) {
n = k;
for(int i = 1; i <= n; i++) A[i] = read();
}
else for(int i = 1, x, y; i <= k; i++) x = read(), y = read(), A[x] = y;
memset(king, 0, sizeof king);
register int ans = 1;
for(int i = 1; i <= n; i++) a[i] = (node){i, A[i]};
for(int i = n; i >= 2; i--) {
sort(a + 1, a + 1 + i);
ans = max(ans, king[a[i].id]);
a[1].num -= a[i].num, king[a[1].id] = i;
}
printf("%d\n", ans);
}
return 0;
}