Gym101158A Rearranging a Sequence(思維)
阿新 • • 發佈:2018-09-12
set 訪問 i++ math max namespace sizeof == continue
Gym101158A-Rearranging a Sequence
題意
n表示n個數,m表示m次操作
每次操作將位於ei位置的數移動到最前端。
思路
一個數組記錄操作記錄,一個數組記錄訪問值。從操作數末尾向前推倒,如果遇到未記錄的數值,打印並記錄。遍歷一遍之後,從頭向尾輸出未被記錄的值。
代碼
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<string> #include<vector> #include<stack> #include<bitset> #include<cstdlib> #include<cmath> #include<set> #include<list> #include<deque> #include<map> #include<queue> using namespace std; typedef long long ll; const double PI = acos(-1.0); const double eps = 1e-6; const int INF = 0x3f3f3f3f; int T; const int MAXN = 2e5+10; int a[MAXN]; int vis[MAXN]; void init(){ memset(a,0,sizeof(a)); memset(vis,0,sizeof(vis)); } int n,m; int main() { scanf("%d %d",&n,&m); init(); for(int i=1;i<=m;i++) scanf("%d",&a[i]); for(int i=m;i>=1;i--){ if(vis[a[i]]==1) continue; else{ printf("%d\n",a[i]); vis[a[i]]=1; } } for(int i=1;i<=n;i++){ if(vis[i]==0) printf("%d\n",i); } return 0; }
Gym101158A Rearranging a Sequence(思維)