【Codeforces 1108E1】Array and Segments (Easy version)
阿新 • • 發佈:2019-04-11
n+1 ont namespace 包含 long using define return com
【鏈接】 我是鏈接,點我呀:)
【題意】
題意
【題解】
枚舉最大值和最小值在什麽地方。
顯然,只要包含最小值的區間,都讓他減少。
因為就算那個區間包含最大值,也無所謂,因為不會讓答案變小。
但是那些不包含最大值的區間卻能讓差值變大。
所以沒有問題。
【代碼】
#include <bits/stdc++.h> #define ll long long using namespace std; const int N = 300; int n,m; int a[N+10],segl[N+10],segr[N+10]; int cnt[N+10],idxi; int main(){ ios::sync_with_stdio(0),cin.tie(0); cin >> n >> m; for (int i = 1;i <= n;i++){ cin >> a[i]; } for (int i = 1;i <= m;i++){ cin >> segl[i] >> segr[i]; } int ans = 0,anscnt=0; for (int i = 1;i <= n;i++)//a[i]最大 for (int j = 1;j <= n;j++){//a[j]最小 int x = a[i],y = a[j]; int cnt = 0; for (int l = 1;l <= m;l++){ if (segl[l]<=j && j <= segr[l]){ cnt++; y--; if (segl[l]<=i && i <= segr[l]){ x--; } } } if (x-y>ans){ ans = x-y; idxi = j; anscnt = cnt; } } cout<<ans<<endl; cout<<anscnt<<endl; for (int l = 1;l <= m;l++){ if (segl[l]<=idxi && idxi<=segr[l]){ cout<<l<<" "; } } return 0; }
【Codeforces 1108E1】Array and Segments (Easy version)