QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#733601#9543. Good PartitionsSunlight9#TL 2ms4272kbC++201.8kb2024-11-10 20:03:162024-11-10 20:03:16

Judging History

你现在查看的是最新测评结果

  • [2024-11-10 20:03:16]
  • 评测
  • 测评结果:TL
  • 用时:2ms
  • 内存:4272kb
  • [2024-11-10 20:03:16]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;
using ll = long long;
const int MAXN=5e5+7;
int t;
int n,m;
int a[MAXN];
int cnt=0,prime[MAXN];
bool vis[MAXN];
void pre()
{
    int lim=5e5;
    vis[1]=1;
    for(int i=2;i<=lim;i++)
    {
        if(!vis[i]) prime[++cnt]=i;
        for(int j=1;j<=cnt && i*prime[j]<=lim;j++)
        {
            vis[i*prime[j]]=1;
            if(i%prime[j]==0) break;
        }
    }
    return;
}
bool check(int l,int r)
{
    for(int i=l+1;i<=r;i++)
    {
        if(a[i]<a[i-1]) return 0;
    }
    return 1;
}
int main() {

    // freopen("data.out","r",stdin);
    // freopen("std.out","w",stdout);
    cin.tie(nullptr) -> sync_with_stdio(false);
    
    pre();
    cin>>t;
    while(t--)
    {
        cin>>n>>m;
        for(int i=1;i<=n;i++) cin>>a[i];
        int ans=0;
        for(int k=1;k<=n;k++)
        {
            int num=n/k;
            bool kkk=1;
            for(int i=0;i<=num;i++)
            {
                int l=i*k+1,r=(i+1)*k;
                if(l>n) break;
                r=min(r,n);
                if(!check(l,r)) {kkk=0;break;}  
            }
            if(kkk) ans++;
        }
        cout<<ans<<'\n';
        while(m--)
        {
            int loc,v;
            cin>>loc>>v;
            a[loc]=v;
            ans=0;
            for(int k=1;k<=n;k++)
            {
                int num=n/k;
                bool kkk=1;
                for(int i=0;i<=num;i++)
                {
                    int l=i*k+1,r=(i+1)*k;
                    if(l>n) break;
                    r=min(r,n);
                    if(!check(l,r)) {kkk=0;break;}  
                }
                if(kkk) ans++;
            }
            cout<<ans<<'\n';
        }
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 4184kb

input:

1
5 2
4 3 2 6 1
2 5
3 5

output:

1
2
3

result:

ok 3 lines

Test #2:

score: 0
Accepted
time: 2ms
memory: 4272kb

input:

1
1 1
2000000000
1 1999999999

output:

1
1

result:

ok 2 lines

Test #3:

score: -100
Time Limit Exceeded

input:

1
200000 200000
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 ...

output:


result: