4 条题解
-
3
`#include<bits/stdc++.h> using namespace std;
const int MAXN = 1e5 + 10; struct node { int begin, end, id; }a[MAXN];
bool cmp(node a, node b) { return a.end < b.end; }
int n, ans = 0, num[MAXN], len; int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i].begin >> a[i].end; a[i].id = i; }
sort(a + 1, a + n + 1, cmp); int last = a[1].end; ans = a[1].end - a[1].begin + 1; num[++len] = a[1].id; for (int i = 2; i <= n; i++) { if (a[i].begin >= last) { ans += a[i].end - a[i].begin + 1; num[++len] = a[i].id; last = a[i].end; } } sort(num + 1, num + len + 1); cout << ans << endl; for (int i = 1; i <= len; i++) { cout << num[i] << " "; }
}`
-
0
#include<bits/stdc++.h> #define int long long const int N=1e7+10; using namespace std; int n,num[N],len,ans; struct node{ int begin,end,id; }a[N]; bool cmp(node a1,node a2){ return a1.end<a2.end; } signed main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].begin>>a[i].end; a[i].id=i; } sort(a+1,a+n+1,cmp); int last=a[1].end; ans=a[1].end-a[1].begin+1; num[++len]=a[1].id; for(int i=2;i<=n;i++){ if(a[i].begin>=last){ ans+=a[i].end-a[i].begin+1; num[++len]=a[i].id; last=a[i].end; } } sort(num+1,num+len+1); cout<<ans<<endl; for(int i=1;i<=len;i++){ cout<<num[i]<<" "; } return 0; }
- 1
信息
- ID
- 1584
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 74
- 已通过
- 21
- 上传者