首页 > 代码库 > #269(div2) B. MUH and Important Things

#269(div2) B. MUH and Important Things

题意:有n个数字,代表第i个的难度为a[i],问是否有三种不同的序列使得难度从低到高

思路:那么难度相同的对肯定要>=2,然后瞎搞,嗯,瞎搞就行了

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 struct node
 4 {
 5     int x;
 6     int wei;
 7 }a[2003];
 8 bool cmp(node p,node q)
 9 {
10     return p.x<q.x;
11 }
12 int main()
13 {
14     int n;
15     scanf("%d",&n);
16     for(int i=1;i<=n;i++)
17     {
18         scanf("%d",&a[i].x);
19         a[i].wei=i;
20     }
21     sort(a+1,a+1+n,cmp);
22     int s=1;
23     for(int i=2;i<=n;i++)
24     {
25         if(a[i].x==a[i-1].x)
26             s++;
27     }
28     if(s<=2)
29     {
30         printf("NO\n");
31     }
32     else
33     {
34         int y;
35         printf("YES\n");
36         for(int i=1;i<=n;i++)
37         {
38             printf("%d ",a[i].wei);
39         }
40         printf("\n");
41         for(int i=2;i<=n;i++)
42         {
43             if(a[i].x==a[i-1].x)
44             {
45                 y=i;
46                 swap(a[i],a[i-1]);
47             }
48         }
49          for(int i=1;i<=n;i++)
50         {
51             printf("%d ",a[i].wei);
52         }  printf("\n");
53          for(int i=y;i<=n;i++)
54         {
55             if(a[i].x==a[i-1].x)
56             {
57                 y=i;
58                 swap(a[i],a[i-1]);
59             }
60         }
61          for(int i=1;i<=n;i++)
62         {
63             printf("%d ",a[i].wei);
64         }  printf("\n");
65     }
66     return 0;
67 }

 

#269(div2) B. MUH and Important Things