# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
68027 | 2018-08-15T19:09:04 Z | yusufake | Permutation Recovery (info1cup17_permutation) | C++ | 1791 ms | 17284 KB |
#include<bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define st first #define nd second typedef long long ll; typedef pair < ll , ll > pp; const ll mod = 1e9 + 7; const int N = 7e4 + 4; const int K = 288; vector < pp > V[N]; unordered_map < ll , int > M[N]; pp T[N]; ll L[N],ans[N],n,u,i,j,k,x,y,t; char s[N*10]; void f(ll &r, ll x) { r = (r + x + mod*3) % mod; } int main(){ scanf("%lld",&n); V[0].pb( mp(0,0) ); M[0][0]=1; y = 0; for(i=1;i<=n;i++){ scanf(" %s", s); u = strlen(s); x = 0; for(j=0;j<u;j++) x = (x*10LL + s[j]-'0') % mod; t = (x-y-1+mod*3) % mod; for(j=0;j<K;j++) if(M[j][ (t - L[j] + mod) % mod ]){ for(k=0;k<V[j].size();k++) f(V[j][k].st , L[j]); L[j] = 0; for(k=0;k<V[j].size();k++) if(V[j][k].st == t){ V[j].insert(V[j].begin() + ++k , mp(t,i)); break; } f(t,1); for(; k<V[j].size(); k++) f(V[j][k].st,t); M[j].clear(); for(auto x : V[j]) M[j][x.st]++; for(j++; j<K; j++) f(L[j],t); break; } y = x; ///// if(i % K == 0){ t = 0; for(j=0;j<K;j++){ for(auto x : V[j]){ T[++t] = mp(x.st+L[j],x.nd); f(T[t].st,0); } V[j].clear(); M[j].clear(); L[j] = 0; } for(j=1;j<=t;j++){ V[j>>8].pb(T[j]); M[j>>8][ T[j].st ]++; } } } for(t=i=0;i<K;i++) for(auto x : V[i]) ans[ x.nd ] = ++t; for(i=1;i<=n;i++) printf("%d ",ans[i]-1); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 5884 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 5884 KB | Output is correct |
2 | Correct | 14 ms | 5884 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 5884 KB | Output is correct |
2 | Correct | 14 ms | 5884 KB | Output is correct |
3 | Correct | 22 ms | 6044 KB | Output is correct |
4 | Correct | 20 ms | 6288 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 5884 KB | Output is correct |
2 | Correct | 14 ms | 5884 KB | Output is correct |
3 | Correct | 22 ms | 6044 KB | Output is correct |
4 | Correct | 20 ms | 6288 KB | Output is correct |
5 | Incorrect | 1791 ms | 17284 KB | Output isn't correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 5884 KB | Output is correct |
2 | Correct | 14 ms | 5884 KB | Output is correct |
3 | Correct | 22 ms | 6044 KB | Output is correct |
4 | Correct | 20 ms | 6288 KB | Output is correct |
5 | Incorrect | 1791 ms | 17284 KB | Output isn't correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 5884 KB | Output is correct |
2 | Correct | 14 ms | 5884 KB | Output is correct |
3 | Correct | 22 ms | 6044 KB | Output is correct |
4 | Correct | 20 ms | 6288 KB | Output is correct |
5 | Incorrect | 1791 ms | 17284 KB | Output isn't correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 5884 KB | Output is correct |
2 | Correct | 14 ms | 5884 KB | Output is correct |
3 | Correct | 22 ms | 6044 KB | Output is correct |
4 | Correct | 20 ms | 6288 KB | Output is correct |
5 | Incorrect | 1791 ms | 17284 KB | Output isn't correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 5884 KB | Output is correct |
2 | Correct | 14 ms | 5884 KB | Output is correct |
3 | Correct | 22 ms | 6044 KB | Output is correct |
4 | Correct | 20 ms | 6288 KB | Output is correct |
5 | Incorrect | 1791 ms | 17284 KB | Output isn't correct |