社区讨论

可怜的P1083的代码(ACon#8)求调

P1083[NOIP 2012 提高组] 借教室参与者 3已保存回复 16

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
16 条
当前快照
1 份
快照标识符
@mhjiabgc
此快照首次捕获于
2025/11/04 03:01
4 个月前
此快照最后确认于
2025/11/04 06:25
4 个月前
查看原帖
主诉:
诉求:
  • 在源代码上改是最好喵!
  • 回复请@楼主
CPP
#include<bits/stdc++.h>
using namespace std;
#define itn int
// #define int long long
#define scnaf scanf
int n,m;
int r[1000005];
int d[1000005],s[1000005],t[1000005];
int c[1000005];
int q[1000005];
bool iff(itn x)
{
    memset(c,0,sizeof(c));
    for(int i=1;i<=x;i++)
        c[s[x]]=c[s[x]]+d[i],c[t[x]+1]=c[t[x]+1]-d[i];
    for(int i=1;i<=n;i++)
        q[i]=q[i-1]+c[i];
    for(int i=1;i<=n;i++)
        if(q[i]>r[i])
            return 0;
    return 1;
}
signed main()
{ 
    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;i++)
        scanf("%d",&r[i]);
    for(int i=1;i<=m;i++)
        scanf("%d %d %d",&d[i],&s[i],&t[i]);
    int l=1,r=m,mid;
    if(iff(m))
    {
        printf("0");
        return 0;
    }
    while(l<r)
    {
        mid=(l+r)/2;
        if(iff(mid))
            l=mid+1;
        else
            r=mid;
    }
    printf("-1\n%d",l);

    return 0;
}

回复

16 条回复,欢迎继续交流。

正在加载回复...