N^2都能過!!!!!!!
/*Easy*/#include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>#include<iostream>#include<queue>#include<map>#include<stack>#include<set>#include<math.h>using namespace std;typedef long long int64;//typedef __int64 int64;typedef pair<int64,int64> PII;#define MP(a,b) make_pair((a),(b)) const int maxn = 100005;const int inf = 0x7fffffff;const double pi=acos(-1.0);const double eps = 1e-8;int a[ maxn ];int sum[ maxn ];int main(){int n,mod;while( scanf("%d%d",&n,&mod)==2 ){sum[ 0 ] = 0;for( int i=1;i<=n;i++ ){scanf("%d",&a[i]);sum[ i ] = sum[ i-1 ]+a[ i ];}int M = 0;for( int i=1;i<=n;i++ ){for( int j=1;j<=i&&(i-j+1>M);j++ ){if( (sum[i]-sum[j-1])%mod==0 ){M = i-j+1;}}}printf("%d\n",M);}return 0;}
沒救了!!!
怎麼注釋裡的就是一直WA!!!!!!!
/**/#include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>#include<iostream>#include<queue>#include<map>#include<stack>#include<set>#include<math.h>using namespace std;typedef long long int64;//typedef __int64 int64;typedef pair<int64,int64> PII;#define MP(a,b) make_pair((a),(b)) const int maxn = 100005;const int inf = 0x7fffffff;const double pi=acos(-1.0);const double eps = 1e-8;struct Node{int sum,id;}a[ maxn ];int cmp( Node a,Node b ){if( a.sum!=b.sum )return a.sum<b.sum;elsereturn a.id<b.id;}int main(){int n,mod;while( scanf("%d%d",&n,&mod)==2 ){int tt;a[ 0 ].sum = a[ 0 ].id = 0;for( int i=1;i<=n;i++ ){scanf("%d",&tt);a[ i ].sum = (a[ i-1 ].sum + tt)%mod;//還有就是注意負數!!a[ i ].id = i;if( mod!=0 ) a[ i ].sum = (a[ i ].sum+mod)%mod;//!!}int M = 0;sort( a+1,a+1+n,cmp );int j = 0;for( int i=1;i<=n;i++ ){if( a[i].sum!=a[j].sum )j = i;M = max( M,a[i].id-a[j].id );/*int V = a[i].sum;int IDMin = a[i].id;int IDMax = IDMin;//int f ;for( j=i+1;V==a[j].sum&&j<=n;j++ ){//f = j;//i = j;IDMin = min( IDMin,a[j].id );IDMax = max( IDMax,a[j].id );}M = max( M,IDMax-IDMin );*/}printf("%d\n",M);}return 0;}