1 #include <iostream> 2 #include <cstdio> 3 #include <string> 4 #include <algorithm> 5 using namespace std; 6 const int N=100; 7 struct node { 8 int time; 9 int index; 10 bool group; 11 }; 12 13 bool cmp(node a,node b) 14 { 15 return a.time<b.time; 16 } 17 int main() 18 { 19 int i,j,k,n; 20 int a[N]={0},b[N]={0}; 21 int best[N]; 22 node c[N]; 23 scanf("%d",&n); 24 for(i=0;i<n;i++) { 25 scanf("%d%d",&a[i],&b[i]); 26 } 27 for(i=0;i<n;i++) { 28 c[i].time=a[i]>b[i]?b[i]:a[i]; 29 c[i].index=i; 30 c[i].group=a[i]<=b[i]; 31 32 } 33 sort(c,c+n,cmp); 34 j=0; 35 k=n-1; 36 for(i=0;i<n;i++) { 37 if(c[i].group) { 38 best[j++]=c[i].index; 39 } 40 else { 41 best[k--]=c[i].index; 42 } 43 } 44 j=a[best[0]]; 45 k=j+b[best[0]]; 46 for(i=1;i<n;i++) 47 { 48 j+=a[best[i]]; 49 k=j<k?(k+b[best[i]]):j+b[best[i]]; 50 } 51 printf("%d\n",k); 52 for(i=0;i<n;i++) { 53 printf("%d ",best[i]+1); 54 } 55 printf("\n"); 56 return 0; 57 } 58 /* 59 6 60 2 5 61 7 3 62 6 2 63 4 7 64 6 9 65 8 2 66 67 35 68 1 4 5 2 6 3 69 */