请教大佬!样例也过不了!

P1248 加工生产调度

```cpp sort(a+1,a+1+n); ``` 这里你a已经排过序了,那后面用 a[R[i]] 加的时候,顺序就不是原来的顺序了 (语文不好表述不清,勿喷)
by wowwowwow @ 2023-01-02 11:54:59


AC 代码 ```cpp #include<bits/stdc++.h> using namespace std; const int maxn=1e5; using ll=long long; struct J{ ll a,b,m,id; bool operator<(const J &nj)const { return m<nj.m; } }a[maxn+10]; ll R[maxn+10],n, ta[maxn + 10], tb[maxn + 10]; int main(){ scanf("%lld",&n); for(int i=1; i<=n; ++i) { scanf("%lld",&a[i].a); a[i].id=i; } for(int i=1; i<=n; ++i) { scanf("%lld",&a[i].b); } for(int i=1; i<=n; ++i) { a[i].m=min(a[i].a,a[i].b); ta[i] = a[i].a; tb[i] = a[i].b; } sort(a+1,a+1+n); int i=1,j=n; for(int k=1; k<=n; ++k) { if(a[k].m==a[k].a) { /*error1*/ R[i++]=a[k].id; } else { R[j--]=a[k].id; } } ll A=0,B=0; for(i=1; i<=n; ++i) { A+= ta[R[i]];B=max(A,B);B += tb[R[i]]; } printf("%lld\n",B); for(i=1; i<=n; ++i) { printf("%lld ",R[i]); } return 0; } ```
by wowwowwow @ 2023-01-02 12:00:30


|