51Nod1094 和為k的連續區間(暴力)
阿新 • • 發佈:2018-12-02
求出字首和,字尾和,總和,如果k=總和-字首和-字尾和,就輸出i,j。
字首和字尾和一定要定義成long long型別,不然會溢位。
#include<iostream> #include<algorithm> #include<cstring> #include<string> using namespace std; typedef long long ll; int main() { ll n,k,i,j,sum=0; cin>>n>>k; int a[10005]; for(i=1;i<=n;i++) { cin>>a[i]; sum+=a[i]; } ll fa[10005],sa[10005]; fa[0]=sa[0]=0; fa[1]=a[1]; sa[1]=a[n]; for(i=2;i<=n;i++) fa[i]=fa[i-1]+a[i]; for(i=2,j=n-1;i<=n;i++) sa[i]+=sa[i-1]+a[j--]; int flag=0; for(i=0;i<=n;i++) { for(j=0;j<=n-i;j++) { // cout<<sum-fa[i]-sa[j]<<" "<<fa[i]<<" "<<sa[j]<<endl; if(sum==fa[i]+sa[j]+k) { flag=1; cout<<i+1<<" "<<n-j<<endl; break; } } if(flag) break; } if(!flag) cout<<"No Solution"<<endl; }