#include <bits/stdc++.h> using namespace std; int n, x, y, a, d, s, p, w, b, c; int tab[500010]; int kon[500010]; int duz[500010]; int mal[500010]; int main(){ cin >> n >> p; for(int i=0; i<n ; i++){ cin >> tab[i]; } p--; kon[n-1]=1; a=0; w=0; if (p>=2){ while (p>0&&w==0){ d=tab[a]; for(int i=a+1; i<n; i++){ if (w==0){ if (tab[i]<=d){ kon[i]=1; kon[i-1]=1; //cout << "add " << i+1 << " " << i << endl; p=-2; w=1; s=1; } } d=min(d, tab[i]); } if (w==0){ if (a==0){ kon[a]=1; p--; } else{ if (kon[a-1]==1){ kon[a-1]=0; kon[a]=1; } } } else{ while (p>0){ if (kon[x]!=1){ kon[x]=1; p--; } x++; } } a++; if (a==n&&w==0){ y=1; cout << "NIE"; p=0; } } if (y!=1){ cout << "TAK" << '\n'; for (int i=0; i<n-1; i++){ if (kon[i]==1){ cout << i+1 << " "; } } } } else{ if (tab[0]<tab[n-1]){ cout << "NIE"; y=1; } else{ y=0; b=0; c=tab[n-1]; for (int i=0; i<n; i++){ if (tab[i]>b){ b=tab[i]; } duz[i]=b; } for (int i=n-1; i>=0; i--){ if (tab[i]<c){ c=tab[i]; } mal[i]=c; } for (int i=0; i<n; i++){ if (duz[i]<mal[i+1]&&y!=1){ cout << "TAK" << endl; cout << i+1; y=1; } } if (y==0){ cout << "NIE"; } } } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | #include <bits/stdc++.h> using namespace std; int n, x, y, a, d, s, p, w, b, c; int tab[500010]; int kon[500010]; int duz[500010]; int mal[500010]; int main(){ cin >> n >> p; for(int i=0; i<n ; i++){ cin >> tab[i]; } p--; kon[n-1]=1; a=0; w=0; if (p>=2){ while (p>0&&w==0){ d=tab[a]; for(int i=a+1; i<n; i++){ if (w==0){ if (tab[i]<=d){ kon[i]=1; kon[i-1]=1; //cout << "add " << i+1 << " " << i << endl; p=-2; w=1; s=1; } } d=min(d, tab[i]); } if (w==0){ if (a==0){ kon[a]=1; p--; } else{ if (kon[a-1]==1){ kon[a-1]=0; kon[a]=1; } } } else{ while (p>0){ if (kon[x]!=1){ kon[x]=1; p--; } x++; } } a++; if (a==n&&w==0){ y=1; cout << "NIE"; p=0; } } if (y!=1){ cout << "TAK" << '\n'; for (int i=0; i<n-1; i++){ if (kon[i]==1){ cout << i+1 << " "; } } } } else{ if (tab[0]<tab[n-1]){ cout << "NIE"; y=1; } else{ y=0; b=0; c=tab[n-1]; for (int i=0; i<n; i++){ if (tab[i]>b){ b=tab[i]; } duz[i]=b; } for (int i=n-1; i>=0; i--){ if (tab[i]<c){ c=tab[i]; } mal[i]=c; } for (int i=0; i<n; i++){ if (duz[i]<mal[i+1]&&y!=1){ cout << "TAK" << endl; cout << i+1; y=1; } } if (y==0){ cout << "NIE"; } } } } |