51nod 1094 和為k的連續區間

2021-07-10 19:06:01 字數 1220 閱讀 8672

一整數數列a1, a2, ... , an(有正有負),以及另乙個整數k,求乙個區間[i, j],(1 <= i <= j <= n),使得a[i] + ... + a[j] = k。

input

第1行:2個數n,k。n為數列的長度。k為需要求的和。(2 <= n <= 10000,-10^9 <= k <= 10^9)

第2 - n + 1行:a[i](-10^9 <= a[i] <= 10^9)。

output

如果沒有這樣的序列輸出no solution。

輸出2個數i, j,分別是區間的起始和結束位置。如果存在多個,輸出i最小的。如果i相等,輸出j最小的。

input示例

6 1012

3456

output示例

1 4

思路:二分

#include #include #include #include #include #include #include #include #include #include #include using namespace std;

#define esp 1e-8

const double pi = acos(-1.0);

const int inf = 1000000005;

const long long mod = 1000000007;

//freopen("in.txt","r",stdin); //輸入重定向,輸入資料將從in.txt檔案中讀取

//freopen("out.txt","w",stdout); //輸出重定向,輸出資料將儲存在out.txt檔案中

struct node

a[10005];

long long b[10005];

bool cmp(node a, node b)

int main()

sort(a + 1, a + 1 + n, cmp);

int xx, yy;

for (i = 1; i <= n; ++i)

else

l++;}}

if (ans)

break;

} if (ans)

printf("%d %d\n", xx, yy);

else

printf("no solution\n");

}}

51Nod 1094 和為k的連續區間

1094 和為k的連續區間 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 收藏 關注 一整數數列a1,a2,an 有正有負 以及另乙個整數k,求乙個區間 i,j 1 i j n 使得a i a j k。input 第1行 2個數n,k。n為數列的長度。k為需要求...

51nod 1094 和為k的連續區間

一整數數列a1,a2,an 有正有負 以及另乙個整數k,求乙個區間 i,j 1 i j n 使得a i a j k。input 第1行 2個數n,k。n為數列的長度。k為需要求的和。2 n 10000,10 9 k 10 9 第2 n 1行 a i 10 9 a i 10 9 output 如果沒有...

和為k的連續區間 51Nod 1094

一整數數列a1,a2,an 有正有負 以及另乙個整數k,求乙個區間 i,j i,j 1 i j n 使得a i i a j j k。input 第1行 2個數n,k。n為數列的長度。k為需要求的和。2 n 10000,10 9 k 10 9 第2 n 1行 a i i 10 9 a i i 10 9...