1 条题解

  • 0
    @ 2022-8-25 20:23:01
    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    int read() {
    	int x=0,v=1; char ch=getchar();
    	for (;ch<'0'||ch>'9';v=(ch=='-')?(-1):(v),ch=getchar());
    	for (;ch<='9'&&ch>='0';x=x*10+ch-'0',ch=getchar());
    	return x*v;
    }
    #define rep(i,st,ed) for (int i=st;i<=ed;++i)
    #define fi first
    #define se second
    typedef std:: pair <int,int> pair;
    const int N=600005;
    pair t[N];
    int a[N];
    void solve() {
    	int s=read(),k=read(),n=read();
    	int sum=0,tot=0; bool flag=true;
    	rep(i,1,n) a[i]=read();
    	rep(i,1,n) {
    		sum+=a[i];
    		if (i&1) {
    			if (a[i]>=k) 
    				flag=false;
    			int l=sum-a[i],r=sum-1;
    			sum%=k;
    			if ((l/k)<(r/k)) {
    				t[++tot]=pair(l%k,k-1);
    				t[++tot]=pair(0,r%k);
    			} 
    			else 
    				t[++tot]=pair(l%k,r%k);
    		}
    	}
    	std:: sort(t+1,t+tot+1);
    	int ans=0,j=-1;
    	for (int i=1;i<=tot;i++) {
    		ans=std:: max(t[i].fi-j-1,ans);
    		j=std:: max(j,t[i].se);
    	}
    	ans=std:: max(t[1].fi+k-1-j,ans);
    	(ans>=s&&flag)?puts("TAK"):puts("NIE");
    }
    int main(void) {
    	for (int T=read();T--;) solve();
    	return 0;
    }
    
    • 1

    信息

    ID
    2707
    时间
    2000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    20
    已通过
    4
    上传者