社区讨论
玄关求调
P14217 [ICPC 2024 Kunming I] 两星级竞赛参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mhj0xap5
- 此快照首次捕获于
- 2025/11/03 18:55 4 个月前
- 此快照最后确认于
- 2025/11/03 18:55 4 个月前
注意到 相同的时候的情况了,但还是第二个点就错了
CPP#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
inline ll read(){
ll x=0,f=1;char c;
do c=getchar();while(!isdigit(c)&&c!='-');
if(c=='-') f=-1,c=getchar();
while(isdigit(c)) x=x*10+c-'0',c=getchar();
return x*f;
}
const int N = 4e5+10;
struct exam{
ll s,id,sum,cnt;
vector<ll> v;
}a[N];
ll n,m,k;
bool cmp1(exam a,exam b){
return a.s>b.s;
}
bool cmp2(exam a,exam b){
return a.id<b.id;
}
int main(){
ll T=read();
while(T--){
n=read(),m=read(),k=read();
for(ll i=1;i<=n;i++){
exam e;
e.s=read();e.id=i;e.v.clear();e.sum=0;e.cnt=0;
a[i]=e;
for(ll j=1;j<=m;j++){
ll x=read();
if(x==-1) a[i].cnt++;
else a[i].sum+=x;
a[i].v.push_back(x);
}
}
sort(a+1,a+n+1,cmp1);
bool f=1;
ll las;
a[0].s=a[1].s;
for(ll i=1;i<=n;i++){
if(i==1){
a[i].sum+=k*a[i].cnt;
for(ll j=0;j<m;j++)
if(a[i].v[j]==-1) a[i].v[j]=k;
las=a[i].sum;
continue;
}
las=min(las,a[i-1].sum);
if(a[i].sum>=las){
puts("No");f=0;
break;
}
if(a[i].sum+k*a[i].cnt<las){
a[i].sum+=k*a[i].cnt;
for(ll j=0;j<m;j++)
if(a[i].v[j]==-1) a[i].v[j]=k;
}
else{
for(ll j=0;j<m;j++){
if(a[i].v[j]==-1){
if(a[i].sum+k<las)
a[i].sum+=k,a[i].v[j]=k;
else{
ll need=las-1-a[i].sum;
a[i].sum+=need;
a[i].v[j]=need;
}
}
}
}
}
sort(a+1,a+n+1,cmp2);
if(f){
puts("Yes");
for(ll i=1;i<=n;i++){
for(ll j=0;j<a[i].v.size();j++)
printf("%lld ",a[i].v[j]);
printf("\n");
}
}
}
return 0;
}
/*
5
3 4 5
5 1 3 -1 -1
2 -1 5 -1 5
3 3 -1 -1 4
2 3 10
10000 5 0 -1
1 10 10 10
2 3 10
10 1 2 3
100 4 5 6
2 3 10
100 1 2 3
10 4 5 6
2 3 10000
100 -1 -1 -1
1 -1 -1 -1
*/
回复
共 3 条回复,欢迎继续交流。
正在加载回复...