1 条题解
- 
  0
#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
 - 上传者